[문제]
https://www.acmicpc.net/problem/1541
[풀이]
수를 최솟값으로 만들기 위해서는 마이너스가 나왔을 때 가장 큰 수를 빼면 된다.
따라서 최초의 - 연산자가 나오기 전까지는 전부 더하고, - 엱산자가 나온 이후에는 전부 빼준다.
'55 - 50 + 40 - 10 + 20' 을 입력으로 받았을 때 split() 함수를 통해
expression = sys.stdin.readline().strip().split('-')
print(expression) # ['55', '50+40', '10+20']
- 를 기준으로 문자열을 나눠준다.
for i in expression[0].split('+'):
res += int(i)
expression의 맨 앞의 원소에는 최초의 - 연산자가 나오기 전까지의 숫자들로 이루어져 있기 때문에 해당 숫자들을 전부 더해 res 변수에 저장한다.
for i in expression[1:]:
for j in i.split('+'):
res -= int(j)
expression의 맨 앞 원소 이후 원소들은 전부 빼주어야 하는데, 숫자가 단독으로 한개만 있을 수도 있고 + 연산자와 같이 있는 경우도 있다. 따라서 split('+')을 통해 나온 숫자들을 전부 빼주면 된다.
[코드]
import sys
if __name__ == '__main__':
expression = sys.stdin.readline().strip().split('-')
res = 0
for i in expression[0].split('+'):
res += int(i)
for i in expression[1]:
for j in i.split('+'):
res += int(j)
print(res)
'문제풀이 > BOJ' 카테고리의 다른 글
[Python] BOJ/백준 9375번 패션왕 신해빈 (0) | 2021.08.22 |
---|---|
[Python] BOJ/백준 9095번 1, 2, 3 더하기 (0) | 2021.08.21 |
[Python] BOJ/백준 1389번 케빈 베이컨의 6단계 법칙 (2) | 2021.08.18 |
[Python] BOJ/백준 5525번 IOIOI (0) | 2021.08.12 |
[Python] BOJ/백준 1780번 종이의 개수 (0) | 2021.08.12 |