오답노트 - 잃어버린 괄호

입력을 받는데서 조금 헤맷지만 이후로는 쉽게 풀렸다.

CODE

import sys
read=sys.stdin.readline

tmp=read().split("-")

for i in range(len(tmp)):
    tmp[i]=tmp[i].split("+")

for i in range(len(tmp)):
    sum=0
    for j in range(len(tmp[i])):
        sum+=int(tmp[i][j])
    tmp[i]=sum
answer=tmp[0]
for i in range(1,len(tmp)):
    answer-=tmp[i]

print(answer)


1로 만들기 2

1로 만들기를 풀면서 고통받았던 기억이 새록새록 떠올랐던 문제였다.

CODE

import sys
read=sys.stdin.readline
n=int(read())

dp=list([-1,-1] for _ in range(n+1))
dp[1]=[0,0]
for i in range(2,n+1):
    dp[i]=[dp[i-1][0]+1,i-1]
    if i%2==0:
        if dp[i][0]>dp[i//2][0]: dp[i]=[dp[i//2][0]+1,i//2]
    if i%3==0:
        if dp[i][0]>dp[i//3][0]: dp[i]=[dp[i//3][0]+1,i//3]

a,b=dp[-1][0],dp[-1][1]
print(dp[-1][0])
print(n,end=' ')
while a!=0:
    print(b,end=' ')
    a,b=dp[b][0],dp[b][1]


풀어야 할 문제

  • 스타트 택시
  • 미네랄
  • 회전 초밥
  • 아기 상어
  • 전깃줄 -2
  • 치즈