1. ๋ฌธ์ ์ค๋ช
(1) 1~N๋ฒ๊น์ง์ ์ง์ด ์์. ์ด ์ง๋ค์ ๋นจ๊ฐ, ์ด๋ก, ํ๋์ผ๋ก ์์น ํ๋ ค๊ณ ํจ.
(2) ์ง์ ์ธ์ ํ ๋ฒํธ์ ์๊น์ด ๋ฌ๋ผ์ผ ํจ.
์๋ฅผ ๋ค์ด 1๋ฒ ์ง์ 2๋ฒ์ง๊ณผ ์๊น์ด ๋ฌ๋ผ์ผ ํจ. i๋ฒ ์ง์ i-1๋ฒ ์ง๊ณผ i+1๋ฒ ์ง๊ณผ ์๊น์ด ๋ฌ๋ผ์ผ ํจ.
(3) ๊ฐ ์ง์ ๋นจ๊ฐ, ์ด๋ก,ํ๋์ผ๋ก ์น ํ์ ๋์ ๋น์ฉ์ด ์ฃผ์ด์ง ๋, ์กฐ๊ฑด์ ๋ง๋๋ก ์น ํ ์ต์ ๋น์ฉ์ ๊ตฌํ๋ผ.
2. ์ ๊ทผ ๋ฐฉ์
KEY WORD
: DP
ํด๋น ๋ฌธ์ ๋ ์๊ฐํ ๊ฒ์ด ๋ง์ด ์๋ DP ๋ฌธ์ ์ด๋ค.
Nํ 3์ด์ DP ๋ฐฐ์ด์ ๋ง๋ ๋ค. 0ํ์ ๋นจ๊ฐ, 1ํ์ ์ด๋ก, 3ํ์ ํ๋์ ํด๋นํ๋ ํ์ด๋ค. ๊ทธ๋ ๋ค๋ฉด ๊ฐ ๋ฐฐ์ด์ ์์๋ ๋ฌด์์ ๋ปํ ๊น?
๋ง์ฝ dp[i] [2] ๋ผ๋ฉด i๋ฒ์งธ ์ง์ ์ด๋ก์ผ๋ก ์น ํ์ ๋์ ์ต์ ๋น์ฉ
์ด๋ค.
dp[3] [0] ์ 3๋ฒ์งธ ์ง์ ๋นจ๊ฐ์ผ๋ก ์น ํ์ ๋์ ์ต์ ๋น์ฉ
์ด๋ค.
์ด๋ฅผ ์ด๋ป๊ฒ ๊ตฌํ ๊น?
dp์ ๋ฉ๋ชจ์ด์ ์ด์
์ ์ฌ์ฉํ๋ฉด ๋๋ค. ๋ฉ๋ชจ์ด์ ์ด์
์ด๋, ์ด์ ์ ๋ณด๋ฅผ ์ ์ฅํด์, ๋ถํ์ํ ์ค๋ณต ๊ณ์ฐ์ ์ ๊ฑฐํ๋ ๋ฐฉ๋ฒ์ด๋ค. ์ฌ๊ธฐ์๋ i๋ฒ์งธ ์ง์ ๋นจ๊ฐ, ์ด๋ก, ํ๋ ์ผ๋ก ์น ํ์ ๋์ ์ต์ ๋น์ฉ ์ ๋ณด๋ฅผ ์ ์ฅํด๋ฌ์, ๋ค์ i+1๋ฒ์งธ ์ง์ ์น ํ ๋ ์ต์ ๋น์ฉ์ ์ด์ ์ง์ ๋ชจ๋ ๋์๋ณผ ํ์ ์์ด, i๋ฒ์งธ ์ง์ ์น ํ ๋์ ์ต์๋น์ฉ๋ง์ ์ด์ฉํด์ ๊ตฌํ ์ ์๊ฒ ํ๋ ๊ฒ์ด๋ค. ์ฐ๋ฆฌ๋ ์ด๋ฅผ ํตํด, loop๋ฌธ ํ ๋ฒ๋ง์ผ๋ก ๋ฌธ์ ์ ๋ต์ ๊ตฌํ ์ ์๋ค. ๋ค์ ์์๋ฅผ ๋ณด์.
๋ฉ๋ชจ์ด์ ์ด์
์ ์ด์ฉํด ์ด์ ์ ๋ณด๋ฅผ ๊ณ์ ํ์ฉํ๊ธฐ ์ํด์ ์ด์ ์ ๋ณด์ ํ์ฌ ์ ๋ณด๊ฐ์ ๊ณต์์ด ํ์ํ๋ค. ์ด๊ฒ์ ์ ํ์
์ด๋ผ๊ณ ํ๋ค. ์์ ์ฌ์ง์ 1๋ฒ ์ง์ ๊ฐ ์๊น๋ก ์น ํ์ ๋์ ์ต์๋น์ฉ์ด๋ค. ๊ทธ๋ฌ๋ฉด 2๋ฒ์งธ ์ง์ ๊ฐ ์๊น๋ก ์น ํ์ ๋์ ์ต์๋น์ฉ์ ์ด๋ป๊ฒ ๋๋๊ฐ?
๋นจ๊ฐ ์ง = 2๋ฒ์งธ ์ง์ ๋นจ๊ฐ์์ผ๋ก ์น ํ ๋น์ฉ + 1๋ฒ ์ง์ ์ด๋ก์์ผ๋ก ์น ํ์ ๋๋, ํ๋์์ผ๋ก ์น ํ์ ๋์ ์ต์๊ฐ
์ด๋ก ์ง = 2๋ฒ์งธ ์ง์ ์ด๋ก์์ผ๋ก ์น ํ ๋น์ฉ + 1๋ฒ ์ง์ ๋นจ๊ฐ์์ผ๋ก ์น ํ์ ๋๋, ํ๋์์ผ๋ก ์น ํ์ ๋์ ์ต์๊ฐ
ํ๋ ์ง = 2๋ฒ์งธ ์ง์ ํ๋์์ผ๋ก ์น ํ ๋น์ฉ + 1๋ฒ ์ง์ ๋นจ๊ฐ์์ผ๋ก ์น ํ์ ๋๋, ์ด๋ก์์ผ๋ก ์น ํ์ ๋์ ์ต์๊ฐ
์ด๋ค. ๊ทธ๋ฆผ์ผ๋ก ํํํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
๊ทธ๋ผ 3๋ฒ์งธ ์ง์ ์ด๋ค๊ฐ?
3๋ฒ์งธ ์ง ๋ํ 3๋ฒ์งธ ์ง์ ํน์ ์๊น๋ก ์น ํ์ ๋์ ๋น์ฉ
+ ์ด์ ์ง์ ๋ค๋ฅธ ์๊น๋ก ์น ํ ๊ฒฝ์ฐ ์ค ์ต์ ๋น์ฉ
์ด๋ค.
3๋ฒ์งธ ์ง์์์ ์ต์ ๋น์ฉ์ ๊ตฌํ ๋, 1 ๋ฒ์งธ ์ง๊น์ง ์กฐํํ ํ์๊ฐ ์๋ ๊ฒ์ด, ์ด๋ฏธ 2๋ฒ์งธ ์ง์์ 1~2๋ฒ๊น์ง ๋ค ๊ณ ๋ คํ ์ต์ ๋น์ฉ์ผ๋ก ๊ฐ์ ๊ตฌํด๋์๊ธฐ ๋๋ฌธ์ด๋ค. ๋ฐ๋ผ์ dp ๋ฐฐ์ด์ 2๋ฒ์งธ ์ง ๊ณ์ฐ ๊ฐ๋ค๋ง ๋ณด๋ฉด ๋๋ค. ๋ ๊ตฌํด๋ณด๋ฉด ์ด๋ ๊ฒ ๋๋ค.
์ด์ ์ ํ์์ ๊ตฌํด๋ณด์. ์ ํ์์
dp[i][0] = i๋ฒ์งธ ์ง์ 0๋ฒ ์๊น๋ก ์น ํ์ ๋์ ๋น์ฉ + Math.min(dp[i-1][1], dp[i-1][2]);
์ด๋ค. ๋ฌผ๋ก ์์ ์์ ์ด๋ก์์ผ๋ก ์น ํ์ ๋์ dp์ด๊ณ , ๋นจ๊ฐ์์ผ๋ก ์น ํ ๋์ ํ๋์์ผ๋ก ์น ํ ๋๋ ์ด์ ์ ์ง๊ณผ ์๊น์ด ์ ๊ฒน์น๋๋ก ๋ฒํธ๋ฅผ ๋ฐ๊ฟ๊ฐ๋ฉฐ ์ ํ์์ ๋ง๋ค์ด์ฃผ๋ฉด ๋๋ค.
3. ์ฝ๋ ํ์ด
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int [][] dp = new int [N+1][3];
for (int i = 1; i <= N; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
int red = Integer.parseInt(st.nextToken());
int green = Integer.parseInt(st.nextToken());
int blue = Integer.parseInt(st.nextToken());
dp[i][0] = red + Math.min(dp[i-1][1], dp[i-1][2]);
dp[i][1] = green + Math.min(dp[i-1][0], dp[i-1][2]);
dp[i][2] = blue + Math.min(dp[i-1][0],dp[i-1][1]);
}
Arrays.sort(dp[N]);
System.out.println(dp[N][0]);
}
}