https://www.acmicpc.net/problem/1149
์ํฅ์ or ํํฅ์์ผ๋ก ํธ๋ DP ๊ฐ๋ ์ ์๋ค๋ฉด ๊ธ๋ฐฉ ์ฝ๊ฒ ํ๋ฆฐ๋ค.
cost ๋ฐฐ์ด๊ณผ ํฌ๊ธฐ๊ฐ ๊ฐ์ 2์ฐจ์์ dp ๋ฐฐ์ด์ dp[i][j]๊น์ง์ ๋น์ฉ์ ํฉ์ ์ ์ฅํ๋ค.
1. dp ๋ฐฐ์ด์ 0ํ : 1๋ฒ ์ง์ R, G, B ๊ฐ์ ์ ์ฅํ๋ค.
2. dp ๋ฐฐ์ด์ 1 ~ N-1ํ
- R์ ์ ํํ ๊ฒฝ์ฐ : ํ์ฌ์ ํ์์ R์ ์ ํํ ๊ฒฝ์ฐ์ ๋น์ฉ์ ์ด์ ํ์์ G๋ฅผ ์ ํํ์ ๊ฒฝ์ฐ์ ๋น์ฉ์ ํฉ๊ณผ ์ด์ ํ์์ B๋ฅผ ์ ํํ์ ๊ฒฝ์ฐ์ ๋น์ฉ์ ํฉ ์ค ์ต์๊ฐ์ ๋ํ๋ค.
- G๋ฅผ ์ ํํ ๊ฒฝ์ฐ : ํ์ฌ์ ํ์์ G์ ์ ํํ ๊ฒฝ์ฐ์ ๋น์ฉ์ ์ด์ ํ์์ R์ ์ ํํ์ ๊ฒฝ์ฐ์ ๋น์ฉ์ ํฉ๊ณผ ์ด์ ํ์์ B๋ฅผ ์ ํํ์ ๊ฒฝ์ฐ์ ๋น์ฉ์ ํฉ ์ค ์ต์๊ฐ์ ๋ํ๋ค.
- B๋ฅผ ์ ํํ ๊ฒฝ์ฐ : ํ์ฌ์ ํ์์ G์ ์ ํํ ๊ฒฝ์ฐ์ ๋น์ฉ์ ์ด์ ํ์์ R์ ์ ํํ์ ๊ฒฝ์ฐ์ ๋น์ฉ์ ํฉ๊ณผ ์ด์ ํ์์ G๋ฅผ ์ ํํ์ ๊ฒฝ์ฐ์ ๋น์ฉ์ ํฉ ์ค ์ต์๊ฐ์ ๋ํ๋ค.
์ ๋ต(์ต์๊ฐ)์ N - 1ํ์์ ์ต์ข ์ ์ผ๋ก R์ ์ ํํ์ ๊ฒฝ์ฐ, G๋ฅผ ์ ํํ์ ๊ฒฝ์ฐ, B๋ฅผ ์ ํํ์ ๊ฒฝ์ฐ ์ค ์ต์๊ฐ์ด๋ค.
์ฝ๋
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class RGBStreet {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int[][] cost = new int[N][3];
for(int i = 0; i < N; i++) {
String[] input = br.readLine().split(" ");
for(int j = 0; j < 3; j++) {
cost[i][j] = Integer.parseInt(input[j]);
}
}
int[][] dp = new int[N][3];
dp[0][0] = cost[0][0];
dp[0][1] = cost[0][1];
dp[0][2] = cost[0][2];
for(int i = 1; i < N; i++) {
dp[i][0] = cost[i][0] + Math.min(dp[i - 1][1], dp[i - 1][2]);
dp[i][1] = cost[i][1] + Math.min(dp[i - 1][0], dp[i - 1][2]);
dp[i][2] = cost[i][2] + Math.min(dp[i - 1][0], dp[i - 1][1]);
}
int min = Math.min(dp[N - 1][0], Math.min(dp[N - 1][1], dp[N - 1][2]));
System.out.println(min);
}
}
๊ฒฐ๊ณผ
'Algorithm > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
11404๋ฒ - ํ๋ก์ด๋ (0) | 2022.04.06 |
---|---|
๋ฐฑ์ค 1780๋ฒ - ์ข ์ด์ ๊ฐ์ (0) | 2022.04.03 |
๋ฐฑ์ค 1072๋ฒ - ๊ฒ์ (0) | 2022.03.30 |
๋ฐฑ์ค 2805๋ฒ - ๋๋ฌด ์๋ฅด๊ธฐ (0) | 2022.03.28 |
๋ฐฑ์ค 2156๋ฒ - ํฌ๋์ฃผ ์์ (0) | 2022.03.17 |