스토리지

[08.22] 백준 1541 - 잃어버린 괄호 본문

알고리즘

[08.22] 백준 1541 - 잃어버린 괄호

ljw4104 2021. 8. 22. 17:52

https://www.acmicpc.net/problem/1541

 

1541번: 잃어버린 괄호

첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다

www.acmicpc.net

언뜻보면 eval로 쉽게 해결할 수 있을 것 같은 코드이다.

하지만 eval로만 코드를 짜면 런타임에러가 무조건 나온다.

 

이유

예를들면, 055-050+040을 eval함수에 넣으면 런타임 에러가 발생한다.

055를 eval은 숫자로 바꿀 수 없다. 0을 떼야된다.

 

import sys
expression = sys.stdin.readline().split('-')

partial_sum = []
for i in expression:
    temp = list(map(int, i.split('+')))
    partial_sum.append(sum(temp))

total = partial_sum[0]
for psum in partial_sum[1:]:
    total -= psum

print(total)

한참을 몰라서 헤메고 어떤 블로그를 참고해서 만든 코드이다...

첫번째 반복문까지는 이해가 되었지만 두번째 반복문이 살짝 이해가 안되었지만 과정을 모두 하나하나 적어보니 이해가 되었다.

 

첫번쨰 반복문에서 이미 +에 관한 연산을 모두 끝내므로 두번째에서는 무조건 -만 하면됨.

+를 가장 많이 한 값을 빼므로 가장 작은 값이 나올 수 밖에 없는 구조이다.

Comments