본문 바로가기
백준알고리즘/동적 계획법1

(Python/🥈1)백준 알고리즘 1932번: 정수 삼각형

by windy7271 2022. 11. 14.
728x90
반응형

문제 출처;https://www.acmicpc.net/problem/1932

 

1932번: 정수 삼각형

첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다.

www.acmicpc.net

풀이:

 

import sys
sys.stdin = open('/Users/song/Desktop/Python/Python/h.txt', 'r')

def solution(triangle):

    dp = [[0]*len(triangle) for i in range(len(triangle))]
    dp[0][0] = triangle[0][0]
    for i in range(0, len(triangle)-1):
        for j in range(len(triangle[i])):
            dp[i+1][j] = max(dp[i+1][j], dp[i][j] + triangle[i+1][j]) 
            dp[i+1][j+1] = max(dp[i+1][j+1], dp[i][j]+triangle[i+1][j+1]) 
    return max(dp[-1])

N = int(input())
triangle = []
for i in range(N):
    triangle.append(list(map(int,input().split(' '))))
print(solution(triangle))

 



dp[i + 1][j] = max(dp[i + 1][j], dp[i][j] + triangle[i + 1][j]) 

# 각줄 첫번째 자리와 중간 최댓값
# dp[i+1][j] 로 이전에 위에 두개 더한게 저장되어있음

dp[i + 1][j + 1] = max(dp[i + 1][j + 1], dp[i][j] + triangle[i + 1][j + 1])

# 각 줄 마지막 자리와 중간값 최댓값비교
# dp[i + 1][j + 1] 로 이전에 위에 두개 더한게 저장되어있음

 

 

며칠전 dp를 공부하면서 프로그래머스에서 푼 문제랑 동일하다.

https://windy7271.tistory.com/entry/PythonLV3-%EC%A0%95%EC%88%98-%EC%82%BC%EA%B0%81%ED%98%95

 

(Python/LV3) 정수 삼각형

문제 출처: https://school.programmers.co.kr/learn/courses/30/lessons/43105 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁

windy7271.tistory.com

 

 

반응형

댓글