반응형
문자열을 parsing하고 수학적으로 최소값을 구하는 문제였습니다.
풀이방법
1. '-'를 기준으로 식들을 나눈다.
문제의 예제를 예시) 55-50+40 인 경우 [55,50+40]이 됩니다.
2. 처음 식 ('-'로 나눈 후 배열의 첫번째 원소)은 '+'가 포함되어 있을 수 있으니 '+'를 기준으로 split한 뒤 나온 배열의 모든 원소를 더해 처음 식의 결과 값을 구합니다. 그 후 답 변수인 ans의 초기값을 해당값으로 배정해 줍니다.
3. 처음 식 다음의 배열을 시작으로 배열의 길이 끝까지 모두 돌며 한번 loop를 진행 시 => +가 포함된 식은 다시 '+'를 기점으로 나누어준 뒤 나온 배열의 원소들을 모두 각자 더해준 뒤에 답변수인 ans에서 빼주시면 됩니다.
4.'-'를 기준으로 나누어 줄 때 -12가 첫원소라면 ['',12]로 parsing되므로 해당 논리가 틀렸다 라고 생각할 수 있지만 애초에 양수를 입력받으므로 고려할 필요가 없습니다.
Code
expression = input()
arr = expression.split('-')
ans = 0
parsedFirstExpArr = arr[0].split('+')
for i in range(0,len(parsedFirstExpArr)):
ans += int(parsedFirstExpArr[i])
for i in range(1,len(arr)):
plus = arr[i].split('+')
sum = 0
for j in range(len(plus)):
sum += int(plus[j])
ans -= sum
print(ans)
'Algorithm > String' 카테고리의 다른 글
(C++) - 백준(BOJ) 1439번 : 뒤집기 답 (0) | 2020.09.20 |
---|---|
(C++) - 백준(BOJ) 5525번 : IOIOI 답 (0) | 2020.09.16 |
(C++) - 백준(BOJ) 4949번 : 균형잡힌 세상 답 (0) | 2020.08.23 |
(C++) - 백준(BOJ) 2562번 : ACM 호텔 답 (0) | 2020.07.24 |
(C++) - 백준(BOJ) 1764번 : 듣보잡 (0) | 2020.01.06 |