반응형
https://www.acmicpc.net/problem/1541
수열 문제라서 되게 코드가 간결할줄 알았는데 짜다보니 코드가 점점 길어지는 것 같다ㅏ,,,
먼저 입력으로 주어진 문자열에서
operator와 num을 다른 리스트로 분리하였고 res라는 리스트를 따로 만들어서 - 이후의 숫자를 계산한 값을 넣도록 만들었다.
예를 들어 55-50+40+30+20-30-25 가 입력으로 주어졌을때 리스트가 [55, '-', 140, '-', 30, '-', 25]이런식으로 만들어지도록 코드를 구현했다. 이렇게 된 리스트를 이제 계산만 해주면 최솟값을 쉽게 구할 수 있다.
import sys
input = sys.stdin.readline
inp = str(input())
outp=''
num=[]
op=[]
#op와 num 분리
for i in range(len(inp)):
if inp[i] == '-':
num.append(int(outp))
outp=''
op.append('-')
elif inp[i] =='+':
num.append(int(outp))
outp = ''
op.append("+")
elif inp[i] =='\n':
num.append(int(outp))
else:
outp+=inp[i]
res=[]
def recur(idx,numb):
prev=numb
for i in range(idx,len(op)):
if op[i]=='-':
res.append(prev)
res.append("-")
sum1=recur(i+1,num[i+1])
return
else:
prev+=num[i+1]
res.append(prev)
return
recur(0,num[0])
sum=0
pass0=False
for i in range(len(res)):
if res[i]=="-":
sum-=res[i+1]
pass0=True
else:
if pass0:
pass0=False
continue
else:
sum+=res[i]
print(res)
print(sum)
반응형
'Algorithm > Baekjoon' 카테고리의 다른 글
Python 15686번 치킨 배달 (0) | 2022.09.09 |
---|---|
Python 16234번 인구 이동 (0) | 2022.08.06 |
Python 16929번 Two Dots (0) | 2022.08.05 |
Python 16928번 뱀과 사다리 게임 (0) | 2022.08.05 |
Python 11048번 이동하기 (0) | 2022.08.03 |