[백준] 1932번 : 정수 삼각형

2021. 4. 21. 15:38백준

 

 

접근법

- 결과를 도출해 내기 위해서는 삼각형의 맨 밑에 있는 수들의 각 값을 알아야겠다고 생각했다. 각 값들을 구하려면 값으 좌상 혹은 우상 중 더 큰 값을 자신의 값과 더해야한다. 그렇기 때문에 삼각형의 모든 노드에서 최선의 값을 구하려고 했다.

 

- 일단 좌변과 우변은 고를 것 없이 자신의 상위 노드(좌변일 경우 triangle[i - 1][j], 우변일 경우 triangle[i - 1][j - 1])와 자신을 더한 값이 최선의 값이다.

 

- 그 외의 경우 자신을 기준으로 좌상의 값과 우상의 값 중 더 큰 값을 자신과 더하고 이 값을 triangle[i][j]에 저장한다.

 

- 맨 밑 변에서 max값을 출력한다.

 

 

 

 

 

 

풀이

N = int(input())
triangle = list()
for _ in range(N) :
    triangle.append(list(map(int, input().split())))
    
for i in range(1, len(triangle)) :
    for j in range(len(triangle[i])) :
        if j == 0 :
            triangle[i][j] += triangle[i - 1][j]
        elif j == len(triangle[i]) - 1 :
            triangle[i][j] += triangle[i - 1][j - 1]
        else :
            triangle[i][j] += max(triangle[i - 1][j], triangle[i - 1][j - 1])

print(max(triangle[N - 1]))

 

 

 

 

 

 

 

결과

'백준' 카테고리의 다른 글

[백준] 7576번 : 토마토  (0) 2021.04.23
[백준] 10844번 : 쉬운 계단 수  (0) 2021.04.22
[백준] 9461번 : 파도반 수열  (0) 2021.04.21
[백준] 2579번 : 계단 오르기  (0) 2021.04.20
[백준] 1904번 : 01타일  (1) 2021.04.20