Algorithm

[๋ฐฑ์ค€] 1149. rgb ๊ฑฐ๋ฆฌ python

๐Ÿณ ๋งํฌ

๋ฐฑ์ค€ rgb๊ฑฐ๋ฆฌ

๐Ÿ• ๋ฌธ์ œ

RGB๊ฑฐ๋ฆฌ์—๋Š” ์ง‘์ด N๊ฐœ ์žˆ๋‹ค. ๊ฑฐ๋ฆฌ๋Š” ์„ ๋ถ„์œผ๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๊ณ , 1๋ฒˆ ์ง‘๋ถ€ํ„ฐ N๋ฒˆ ์ง‘์ด ์ˆœ์„œ๋Œ€๋กœ ์žˆ๋‹ค.

์ง‘์€ ๋นจ๊ฐ•, ์ดˆ๋ก, ํŒŒ๋ž‘ ์ค‘ ํ•˜๋‚˜์˜ ์ƒ‰์œผ๋กœ ์น ํ•ด์•ผ ํ•œ๋‹ค. ๊ฐ๊ฐ์˜ ์ง‘์„ ๋นจ๊ฐ•, ์ดˆ๋ก, ํŒŒ๋ž‘์œผ๋กœ ์น ํ•˜๋Š” ๋น„์šฉ์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ์•„๋ž˜ ๊ทœ์น™์„ ๋งŒ์กฑํ•˜๋ฉด์„œ ๋ชจ๋“  ์ง‘์„ ์น ํ•˜๋Š” ๋น„์šฉ์˜ ์ตœ์†Ÿ๊ฐ’์„ ๊ตฌํ•ด๋ณด์ž.

1๋ฒˆ ์ง‘์˜ ์ƒ‰์€ 2๋ฒˆ ์ง‘์˜ ์ƒ‰๊ณผ ๊ฐ™์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค.
N๋ฒˆ ์ง‘์˜ ์ƒ‰์€ N-1๋ฒˆ ์ง‘์˜ ์ƒ‰๊ณผ ๊ฐ™์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค.
i(2 โ‰ค i โ‰ค N-1)๋ฒˆ ์ง‘์˜ ์ƒ‰์€ i-1๋ฒˆ, i+1๋ฒˆ ์ง‘์˜ ์ƒ‰๊ณผ ๊ฐ™์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค.

๐Ÿพ ํ’€์ด ๋ฐฉ๋ฒ•

26 40 83 # 1๋ฒˆ์ง‘, ๋นจ, ์ดˆ, ํŒŒ
49 60 57 # 2๋ฒˆ์ง‘, ๋นจ, ์ดˆ, ํŒŒ
13 89 99 # 3๋ฒˆ์ง‘, ๋นจ, ์ดˆ, ํŒŒ

2๋ฒˆ์ง‘์„ ๋นจ๊ฐ•์ƒ‰์œผ๋กœ ์น ํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด 1๋ฒˆ์ง‘์€ ์ดˆ๋ก, ํŒŒ๋ž‘๋งŒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ์ด ๋…ผ๋ฆฌ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ 2๋ฒˆ์ง‘์„ ๋นจ๊ฐ•์ƒ‰์œผ๋กœ ์น ํ•  ๋•Œ์—๋Š” 1๋ฒˆ ์ง‘์„ ์ดˆ๋ก์ƒ‰์œผ๋กœ ์น ํ•œ ๊ฒฝ์šฐ์™€ ํŒŒ๋ž€์ƒ‰์œผ๋กœ ์น ํ•œ ๊ฒฝ์šฐ์˜ ๊ฐ’ ์ค‘ ์ตœ์†Ÿ๊ฐ’์— 2๋ฒˆ์ง‘์„ ๋นจ๊ฐ•์ƒ‰์œผ๋กœ ์น ํ•˜๋Š” ๋น„์šฉ์„ ํ•ฉํ•œ๋‹ค.
house[1][0] = min(house[0][1], house[0][2]) + house[1][0]

3๋ฒˆ์ง‘์„ ๋นจ๊ฐ•์ƒ‰์œผ๋กœ ์น ํ•˜๊ฒŒ ๋˜๋Š” ๊ฒฝ์šฐ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ด๋‹ค. 3๋ฒˆ ์ง‘์„ ๋นจ๊ฐ•์ƒ‰์œผ๋กœ ์น ํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด 2๋ฒˆ ์ง‘์€ ์ดˆ๋ก, ํŒŒ๋ž‘๋งŒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ์ด ๋•Œ, 2๋ฒˆ ์ง‘์˜ ๊ฒฝ์šฐ์—๋Š” ์œ„ ๊ฒฝ์šฐ๋ฅผ ํ†ตํ•ด ํ•ด๋‹น ์ƒ‰์— ๋”ฐ๋ผ ์ตœ์†Œ ๋น„์šฉ์ด ๋“ค๋„๋ก 1๋ฒˆ ์ง‘์„ ์ƒ‰์น ํ•œ ๊ฐ’์— 2๋ฒˆ์ง‘์˜ ๊ฒฝ์šฐ๊ฐ€ ๋”ํ•ด์ ธ์žˆ์œผ๋ฏ€๋กœ, 3๋ฒˆ ์ง‘๊ณผ ์ƒ‰๋งŒ ๊ฒน์น˜์ง€ ์•Š๋„๋ก ํ•˜์—ฌ ๋‹ค์‹œ ๋”ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

์•ฝ๊ฐ„ ํšก์„ค์ˆ˜์„คํ•œ๋ฐ,, ์š”์•ฝํ•ด๋ณด์ž๋ฉด

  • 2๋ฒˆ์ง‘์„ ๋นจ๊ฐ•์œผ๋กœ ์ƒ‰์น ํ•˜๋Š” ๊ฒฝ์šฐ
    -> 1๋ฒˆ ์ง‘์€ ํŒŒ๋ž‘, ์ดˆ๋ก๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค.
    -> ๋”ฐ๋ผ์„œ ํŒŒ๋ž‘, ์ดˆ๋ก ์ค‘ ์ตœ์†Œ๋น„์šฉ์„ ๊ฐ–๋Š” ์ƒ‰์œผ๋กœ ๊ฒฐ์ •ํ•œ๋‹ค.
    -> ์ดํ›„ 2๋ฒˆ์ง‘์„ ๋นจ๊ฐ•์œผ๋กœ ์น ํ•˜๋Š” ๋น„์šฉ๊ณผ ํ•ฉํ•ด์ค€๋‹ค.
    -> ๊ทธ ์นธ์€ 1๋ฒˆ ์ง‘๊ณผ 2๋ฒˆ ์ง‘์„ ์ƒ‰์น ํ•˜๋Š” ๋น„์šฉ์ด ๋ชจ๋‘ ํ•ฉํ•ด์ง€๊ฒŒ ๋œ๋‹ค.
  • 3๋ฒˆ์ง‘์„ ๋นจ๊ฐ•์œผ๋กœ ์ƒ‰์น ํ•˜๋Š” ๊ฒฝ์šฐ
    -> 2๋ฒˆ ์ง‘์€ ํŒŒ๋ž‘, ์ดˆ๋ก๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค.
    -> ๋”ฐ๋ผ์„œ 2๋ฒˆ์ง‘์˜ ํŒŒ๋ž‘, ์ดˆ๋ก ์ค‘ ์ตœ์†Œ๋น„์šฉ์„ ๊ฐ–๋Š” ์ƒ‰์œผ๋กœ ๊ฒฐ์ •ํ•œ๋‹ค.
    -> 2๋ฒˆ ์ง‘์—๋Š” 1๋ฒˆ ์ง‘ ๋น„์šฉ๋„ ํ•ฉํ•ด์ ธ์žˆ์œผ๋ฏ€๋กœ, 2๋ฒˆ์ง‘ ๋น„์šฉ์— 3๋ฒˆ์ง‘์˜ ๋น„์šฉ์„ ํ•ฉํ•˜๋ฉด ๋ชจ๋“  ๋น„์šฉ์ด ๋œ๋‹ค.

์†Œ์Šค์ฝ”๋“œ

import sys
sys.stdin = open("input.txt","rt")

n = int(sys.stdin.readline().strip())
house = list()

for _ in range(n):
    house.append(list(map(int,sys.stdin.readline().split())))
for i in range(1,n):
    house[i][0] = min(house[i-1][1], house[i-1][2]) + house[i][0]
    house[i][1] = min(house[i-1][0], house[i-1][2]) + house[i][1]
    house[i][2] = min(house[i-1][0], house[i-1][1]) + house[i][2]
print(min(house[n-1]))