[Python] 백준 1932번: 정수 삼각형
https://www.acmicpc.net/problem/1932
풀이
1
부터 n
번째 줄까지 정삼각형 형태의 배열이므로 j
의 범위를 i+1
로 해서 순회
한줄씩 내려오면서 이전값과 현재값을 더했을 때의 최대값을 선택하면서 내려오면 된다.
이전 값은 현재값을 기준으로 바로 위에서 내려올 경우와 왼쪽 위에서 내려올 경우를 생각할 수 있다.
바로 위에서 내려올 경우는 i==j
라고 할 수 있고, 이 경우 오른쪽에서 내려올 수 있는 숫자가 없으므로 right=0
이 된다.
왼쪽 위에서 내려올 경우는 j==0
라고 할 수 있고, 이 경우 왼쪽에서 내려올 수 있는 숫자가 없으므로 left=0
이 된다.
코드
import sys
input = sys.stdin.readline
n=int(input())
maps = [list(map(int,input().split())) for _ in range(n)]
for i in range(1, n):
for j in range(i+1):
# 왼쪽 위에서 내려오는 경우
if j==0:
left = 0
else:
left = maps[i-1][j-1]
# 바로 위에서 내려오는 경우
if i==j:
right = 0
else:
right = maps[i-1][j]
maps[i][j] = maps[i][j] + max(right, left)
print(max(maps[-1]))
Author And Source
이 문제에 관하여([Python] 백준 1932번: 정수 삼각형), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@joniekwon/Python-백준-1932번-정수-삼각형
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import sys
input = sys.stdin.readline
n=int(input())
maps = [list(map(int,input().split())) for _ in range(n)]
for i in range(1, n):
for j in range(i+1):
# 왼쪽 위에서 내려오는 경우
if j==0:
left = 0
else:
left = maps[i-1][j-1]
# 바로 위에서 내려오는 경우
if i==j:
right = 0
else:
right = maps[i-1][j]
maps[i][j] = maps[i][j] + max(right, left)
print(max(maps[-1]))
Author And Source
이 문제에 관하여([Python] 백준 1932번: 정수 삼각형), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@joniekwon/Python-백준-1932번-정수-삼각형저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)