본문 바로가기

코딩 테스트124

정수 삼각형 p. 376 n=int(input()) d=[] for i in range(n): d.append(list(map(int, input().split()))) for i in range(1,n): for j in range(len(d[i])): # 왼쪽 if j == 0: left=0 else: left=d[i-1][j-1] # 오른쪽 if j==i: right=0 else: right=d[i-1][j] d[i][j]=d[i][j]+max(left, right) print(max(d[n-1])) 2021. 2. 22.
금광 p. 375 test_case=int(input()) tc_result=[] for _ in range(test_case): n,m=map(int, input().split()) array=list(map(int, input().split())) d=[] index=0 for i in range(n): d.append(array[index:index+m]) index += m for j in range(1, m): for i in range(n): # 왼쪽 위에서 오는 경우 if i==0: left_up=0 else: left_up=d[i-1][j-1] # 왼쪽에서 오는 경우 left=d[i][j-1] # 왼쪽 아래에서 오는 경우 if i==n-1: left_down=0 else: left_down=d[.. 2021. 2. 22.
효율적인 화폐 구성 p. 226 n,m=map(int, input().split()) array=[] for _ in range(n): array.append(int(input())) d=[10001]*(m+1) d[0]=0 for i in range(n): for j in range(array[i],m+1): d[j]=min(d[j], d[j-array[i]]+1) if d[m]==10001: print(-1) else: print(d[m]) 주어진 화폐 단위의 배수별로 개수를 구한다. 개수를 구하면서 최소한의 화폐 개수를 찾는다. 2021. 2. 21.
바닥 공사 p. 223 n=int(input()) d=[0]*1001 d[1]=1 d[2]=3 for i in range(3, n+1): d[i]=(d[i-1]+2*d[i-2])%796796 print(d[n]) i-1칸을 채우는 방법 : 2x1타일 사용하기 i-2칸을 채우는 방법 : 1x2타일 사용하기, 2x2타일 사용하기, 2x1타일 사용하기 (i-1방식이 2개 있는 것과 같음 -> 중복)) 점화식 d[i]= d[i-1] * 1 + d[i-2] * 2 2021. 2. 21.
개미 전사 p. 220 n=int(input()) array=list(map(int, input().split())) d=[0]*100 d[0]=array[0] d[1]=max(array[0], array[1]) for i in range(2,n): d[i]=max(d[i-1],d[i-2]+array[i]) print(d[n-1]) for문을 이용하여 차례대로 식량창고를 보며 바로 전 식량창고 무리를 약탈하는게 좋은지, 지금의 식량창고 무리를 약탈하는게 좋은지 판단 마지막 배열에는 최대 식량이 저장되어있음 2021. 2. 21.
1로 만들기 p. 217 방법 1 x=int(input()) d=[0]*30001 # 1일때는 연산횟수가 0임 for i in range(2,x+1): # -1을 한 경우 d[i]=d[i-1]+1 if i%5==0: d[i]=min(d[i],d[i//5]+1) if i%3==0: d[i]=min(d[i],d[i//3]+1) if i%2==0: d[i]==min(d[i],d[i//2]+1) print(d[x]) 방법 2 n=int(input()) dp=[999]*((n+1)*3) dp[0]=0 dp[1]=0 nn=0 for i in range(n+1): dp[i*3]=min(dp[i]+1, dp[i*3]) dp[i*2]=min(dp[i]+1, dp[i*2]) dp[i+1]=min(dp[i]+1, dp[i+1]) pri.. 2021. 2. 21.