코딩 테스트124 [백준 9095] 1,2,3 더하기 DP n=int(input()) input_array=[] for _ in range(n): input_array.append(int(input())) dp=[0]*(max(input_array)+1) dp[1]=1 dp[2]=2 dp[3]=4 for i in range(4,max(input_array)+1): dp[i]=dp[i-3]+dp[i-2]+dp[i-1] for i in range(n): print(dp[input_array[i]]) 2021. 2. 28. [백준 2839] 설탕 배달 DP n=int(input()) d=[5001]*5001 d[3]=1 d[5]=1 for i in range(6,n+1): if d[i-3]==5001: pass else: d[i]=min(d[i],d[i-3]+1) if d[i-5]==5001: pass else: d[i]=min(d[i],d[i-5]+1) if d[n]==5001: print(-1) else: print(d[n]) 2021. 2. 22. 편집 거리 p. 382 str1=input() str2=input() n=len(str1) m=len(str2) d=[[0]*(m+1) for _ in range(n+1)] for i in range(1,n+1): d[i][0]=i for i in range(1,m+1): d[0][i]=i for i in range(1, n+1): for j in range(1, m+1): # 문자가 같다면, 왼쪽 위의 수를 그대로 대입 if str1[i-1]==str2[j-1]: d[i][j]=d[i-1][j-1] # 문자가 다르다면, 3가지 경우 중에서 최솟값 찾기 else: d[i][j]=1+min(d[i][j-1], d[i-1][j], d[i-1][j-1]) print(d[n][m]) 삽입 : 왼쪽 + 1 삭제 : 위쪽 +.. 2021. 2. 22. 못생긴 수 p. 381 n=int(input()) i2=i3=i5=0 next2=2 next3=3 next5=5 d=[0]*n d[0]=1 for i in range(1,n): d[i]=min(next2,next3,next5) if d[i]==next2: i2+=1 next2=d[i2]*2 if d[i]==next3: i3+=1 next3=d[i3]*3 if d[i]==next5: i5+=1 next5=d[i5]*3 print(d[n-1]) 2021. 2. 22. 병사 배치하기 p. 380 n=int(input()) array=list(map(int, input().split())) array.reverse() d=[1]*n for i in range(1,n): for j in range(0,i): if array[j] 2021. 2. 22. 퇴사 p. 377 n=int(input()) t=[] p=[] dp=[0]*(n+1) max_value=0 for i in range(n): _t,_p=map(int, input().split()) t.append(_t) p.append(_p) for i in range(n-1,-1,-1): day=i+t[i] if day 2021. 2. 22. 이전 1 ··· 8 9 10 11 12 13 14 ··· 21 다음