목록문제/백준_파이썬 (155)
sm 기술 블로그
import sys input = sys.stdin.readline N = int(input()) stair = list(int(input()) for _ in range(N)) dp = [] try: dp.append(stair[0]) #dp[0] dp.append(max(stair[0]+stair[1], stair[1])) #dp[1] dp.append(max(stair[0]+stair[2], stair[1]+stair[2])) #dp[2] for i in range(3, N): dp.append(max(dp[i-3]+stair[i-1]+stair[i], dp[i-2]+stair[i])) except: sum = 0 for val in stair: sum += val dp.append(sum) pri..
import sys input = sys.stdin.readline N = int(input()) triangle = [list(map(int,input().split())) for _ in range(N)] sum = 0 result = [] for i in range(1,N): for j in range(0,i+1): if(i == 1): triangle[i][j] += triangle[0][0] continue if(j == 0): triangle[i][j] += triangle[i-1][0] continue if(j == i): triangle[i][j] += triangle[i-1][j-1] continue triangle[i][j] += max(triangle[i-1][j-1],triangle..
import sys input = sys.stdin.readline N = int(input()) housePaintingCost = [list(map(int,input().split())) for _ in range(N)] for i in range(1, N): housePaintingCost[i][0] += min(housePaintingCost[i-1][1],housePaintingCost[i-1][2]) housePaintingCost[i][1] += min(housePaintingCost[i-1][0],housePaintingCost[i-1][2]) housePaintingCost[i][2] += min(housePaintingCost[i-1][0],housePaintingCost[i-1][1]..
import sys input = sys.stdin.readline N = int(input()) num = list(map(int, input().split())) for i in range(1 , N): num[i] = max(num[i], num[i-1]+num[i]) print(max(num)) 문제요약 모든 경우의 연속된 수를 더 했을 때 가장 큰 수가 무엇인가? 설명 리스트의 크기는 상관 없다. 들어온 입력의 리스트 만큼 사용할 것이다. 다음과 같이 숫자(현재 인덱스) 값과 숫자(현재 인덱스) + 숫자(현재 인덱스 - 1) 의 값 중 더 큰 것을 비교하여 본래 리스트에 덮어 씌운다. 예를들어 num[4]번째 에서 3번째 인덱스 값은 0 , 1 , 2 를 합 했을 경우 가장 큰 수를 나타낸다. ..