오뚝이개발자

[백준 2096] 내려가기 본문

코딩 테스트/백준

[백준 2096] 내려가기

땅어 2022. 4. 7. 14:02
728x90
300x250

 

문제


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

 

2096번: 내려가기

첫째 줄에 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 숫자가 세 개씩 주어진다. 숫자는 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 중의 하나가 된다.

www.acmicpc.net

 

 

나의 풀이


DP를 사용하는 문제이다. 메모리 제한이 아주 극심해서 여기에 신경쓰면서 코드를 구현해야 한다. 2차원 리스트로 DP를 구현하면 메모리 초과가 발생하므로 각각의 변수에 저장하도록 한다.

 

코드


# https://www.acmicpc.net/problem/2096

import sys
input = sys.stdin.readline

N = int(input())
dp = [list(map(int, input().split())) for _ in range(N)]

lmax, cmax, rmax = dp[0][0], dp[0][1], dp[0][2]
lmin, cmin, rmin = dp[0][0], dp[0][1], dp[0][2]

for i in range(1, N):
    lmax, cmax, rmax = max(lmax, cmax) + dp[i][0], max(lmax, cmax, rmax) + dp[i][1], max(cmax, rmax) + dp[i][2]
    lmin, cmin, rmin = min(lmin, cmin) + dp[i][0], min(lmin, cmin, rmin) + dp[i][1], min(cmin, rmin) + dp[i][2]

print(max(lmax, cmax, rmax), min(lmin, cmin, rmin))

 

 

 

 

 

728x90
300x250

'코딩 테스트 > 백준' 카테고리의 다른 글

[백준 2638] 치즈  (0) 2022.04.16
[백준 11660] 구간 합 구하기 5  (0) 2022.04.14
[백준 17144] 미세먼지 안녕!  (0) 2022.04.06
[백준 1504] 특정한 최단 경로  (0) 2022.04.05
[백준 13549] 숨바꼭질 3  (1) 2022.04.02
Comments