๐Ÿ—๏ธ Algorithm/๐ŸŸฉ ๋ฐฑ์ค€

๐ŸŸฉ [๋ฐฑ์ค€] [Python] [Gold5] 2096๋ฒˆ_๋‚ด๋ ค๊ฐ€๊ธฐ

Dbswnstjd 2023. 5. 3. 11:34

๋ฌธ์ œ

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

ํ’€์ด

# ๋ฐฑ์ค€ 2096๋ฒˆ ๋ฌธ์ œ - ๋‚ด๋ ค๊ฐ€๊ธฐ
import sys
input = sys.stdin.readline
n = int(input())
arr = list(map(int, input().split()))
maxDP = arr
minDP = arr
for _ in range(n-1):
    arr = list(map(int, input().split()))
    maxDP = [arr[0] + max(maxDP[0], maxDP[1]), arr[1] + max(maxDP), arr[2] + max(maxDP[1], maxDP[2])]
    minDP = [arr[0] + min(minDP[0], minDP[1]), arr[1] + min(minDP), arr[2] + min(minDP[1], minDP[2])]

print(max(maxDP), min(minDP))

DP ๋ฌธ์ œ์ด์ง€๋งŒ ๊ธฐ์กด์˜ ๋ฉ”๋ชจ์ œ์ด์…˜ ๋ฐฉ์‹์„ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ ์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

๋ฉ”๋ชจ์ œ์ด์…˜์„ ํ•  ๋•Œ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฐ’์„ ๋ฐฐ์—ด์— ์ €์žฅํ•˜์ง€ ์•Š๊ณ  ๋ฐฐ์—ด์„ ์ƒˆ๋กญ๊ฒŒ ๊ฐฑ์‹ ์‹œ์ผœ์ค˜์•ผํ•œ๋‹ค.

๋”ฐ๋ผ์„œ minDP์™€ maxDP๋ฅผ ๋‚˜๋ˆ„์–ด์„œ ๊ตฌํ•œ๋‹ค. 

๊ตฌํ•˜๋Š” ๋ฐฉ์‹์€ ๋งจ ์ฒซ์ค„์€ DP์— ์ €์žฅํ•˜๊ณ 

0๋ฒˆ์งธ ์ธ๋ฑ์Šค๋Š” ๋‹ค์Œ์ค„์˜ 0, 1 ์ธ๋ฑ์Šค ์ค‘ ํฐ ๊ฐ’์„ ์„ ํƒํ•˜๊ณ 

1๋ฒˆ์งธ ์ธ๋ฑ์Šค๋Š” ๋‹ค์Œ์ค„ ์ค‘์— ๊ฐ€์žฅ ํฐ ๊ฐ’์„ ์„ ํƒํ•˜๋ฉด ๋˜๊ณ  

2๋ฒˆ์งธ ์ธ๋ฑ์Šค๋Š” ๋‹ค์Œ์ค„์˜ 1, 2 ์ธ๋ฑ์Šค ์ค‘ ํฐ ๊ฐ’์„ ์„ ํƒํ•œ๋‹ค.