728x90
SMALL
이 문제 유형도 풀어본 유형이라서 쉬웠당
규칙만 잘 찾아내면 스무스 ^_^
위 삼각형을 예시로한다면,
arr[0][0] = 7
arr[1][0] = 3 + arr[0][0] arr[1][1] = 3 + arr[0][0]
arr[2][0] = 8 + arr[1][0] arr[2][1] = 1 + max( arr[1][0] , arr[1][1] ) arr[2][2] = 0 + arr[1][1]
규칙이 보이지 않나욤 ??
처음과 끝은 무조건 한칸 위의 맨앞 맨뒤의 것을 가져오는 반면,
그 외의 것은 대각선 왼쪽, 오른쪽 중에 더 큰 값을 가져옴 !!!
이 식을 그대로 적용시키면 끄읕 !
n = int(input())
arr=list()
for _ in range(n):
arr.append(list(map(int,input().split())))
for i in range(1,n):
for j in range(len(arr[i])):
if j==0:
arr[i][0]=arr[i][0]+arr[i-1][0]
elif j==len(arr[i])-1:
arr[i][j] = arr[i][j] + arr[i-1][j-1]
else:
arr[i][j]=arr[i][j]+max(arr[i-1][j],arr[i-1][j-1])
print(max(arr[n-1]))
728x90
LIST
'취준시절 > 백준' 카테고리의 다른 글
[백준 1991] Python - 트리 순회 (0) | 2021.08.25 |
---|---|
[백준 2630] Python - 색종이 만들기 (0) | 2021.08.25 |
[백준 12015번] Python - 가장 긴 증가하는 부분 수열 2 (0) | 2021.08.24 |
[백준 2667] Python - 단지번호붙이기 (0) | 2021.08.24 |
[백준 7569] Python - 토마토 (0) | 2021.08.24 |