728x90
https://www.acmicpc.net/problem/1541
-40 +50
-(40 +50)
-40 +50 +30
-(40 +50 +30)
-40 +50 +30 +100
-(40 +50 +30 +100)
-40 +50 +30 +100 -1000
-(40 +50 +30 +100) -1000
그리디를 이용
- 뒤에 -가 올 때까지 모든 +를 -로 바꾼다
1. 입력 받기
original = input()
2. 숫자와 기호를 분리
# 숫자
st = original.replace('+', ' ')
st = st.replace('-', ' ')
num = list(map(int, st.split()))
여기에서 00009도 숫자로 바꿀 수 있다
# 기호
pm = []
for o in original:
if o=='+' or o=='-':
pm.append(o)
3. 그리디를 이용
for i in range(len(pm)):
if pm[i] == '-':
n = 1
while i+n<len(pm):
if pm[i+n] == '-':
break
pm[i+n] = '-'
n+=1
4. 합계 구하기
total = num[0]
for i in range(len(pm)):
if pm[i] == '+':
total += num[i+1]
else:
total -= num[i+1]
5. 출력
print(total)
'코딩테스트 문제' 카테고리의 다른 글
[백준/Python] 맥주 마시면서 걸어가기 (0) | 2024.09.19 |
---|---|
[백준/Python] 무한 수열 (1) | 2024.09.17 |
[백준/Python] 최대공약수와 최소공배수 (0) | 2024.09.11 |
[백준/Python] 균형 잡힌 세상 (0) | 2024.09.09 |
[백준/Python] 소수 구하기 (0) | 2024.09.09 |