반응형

   문제

   https://www.acmicpc.net/problem/1932




양측의 위층합중 더큰 값을 선택하여 현재 층의 값과 더해주는 걸 반복해서 구하면 된다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import sys
 
 
n=int(input())
triangle=[list(map(int,sys.stdin.readline().split())) for _ in range(n)]
result=[]
for i in range(1,n+1):
    result.append([0 for _ in range(i)]) #결과 담을곳
 
 
 
for i in range(n):
    if i==0:
        result[0][0]=triangle[0][0]
    else:
        for k in range(i+1):
            if k==0:#처음 인자의 위층은 하나
                result[i][k]=result[i-1][k]+triangle[i][k]
            elif k==i:#마지막 인자의 위층은 하나
                result[i][k] = result[i-1][k-1+ triangle[i][k]
            else:
                if result[i-1][k-1]>result[i-1][k]:#왼쪽대각선 위층이 더 크면
                    result[i][k]=result[i-1][k-1]+triangle[i][k]
                else:   #오른쪽대각선 위층이 더크면
                    result[i][k]=result[i-1][k]+triangle[i][k]
 
 
print(max(result[n-1])) #가장아래층까지의 합중에서 가장큰값
cs








반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기