728x90
📌 문제
https://www.acmicpc.net/problem/1541
📌 문제 접근 방법
- 처음엔 내가 직접 수식을 풀 듯이 괄호를 넣어주기 위해 따로 temp리스트에 저장해서 계산하는 코드를 구현했었는데, 생각해보니 더 간단하게 표현할 수 있었다.
- 어쨌든 최소가 되기 위해서는 -가 많아야 한다.
- 그래서 첫 번째 -가 나온 이후로는 부호를 따질 것 없이 모든 숫자를 다 마이너스 해주면 된다!
(어차피 괄호를 삽입하면 모든 숫자를 다 마이너스할 수 있으므로) - 반복문과 함수를 사용해서 한 번이라도 -가 나온다면, 그 뒤로는 -연산만 해주도록 코드를 짜봤다.
(-가 나오게 되면 puls변수가 False로 바뀌고 +연산을 하지 않는다.)
📌 코드
import sys
def plus_minus(ans):
if plus:
ans += temp
else:
ans -= temp
return ans, 0
string = sys.stdin.readline().strip() # 50-55+40
answer = 0
temp = 0
plus = True
for i in range(len(string)+1):
if i == len(string):
answer, temp = plus_minus(answer)
elif string[i] == '-':
answer, temp = plus_minus(answer)
plus = False
elif string[i] == '+':
answer, temp = plus_minus(answer)
else:
temp = temp*10 + int(string[i])
print(answer)
728x90
'ALGORITHM > BAEKJOON' 카테고리의 다른 글
[BOJ/Python] 20437. 문자열 게임 2 (0) | 2021.08.28 |
---|---|
[BOJ/Python] 17298. 오큰수 (0) | 2021.08.28 |
[BOJ/Python] 2805. 나무 자르기 (0) | 2021.08.28 |
[BOJ/Python] 1920. 수 찾기 (0) | 2021.08.21 |
[BOJ/Python] 10989. 수 정렬하기 3 (0) | 2021.08.18 |
댓글