๐ณ ๋งํฌ
๐ ๋ฌธ์
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]))