문제
풀이
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));
StringTokenizer st;
int N = Integer.parseInt(br.readLine());
int[][] arr = new int[N][3];
int[][] dp = new int[N][3];
for (int i = 0; i < N; i++) {
st = new StringTokenizer(br.readLine(), " ");
for (int j = 0; j < 3; j++) {
arr[i][j] = Integer.parseInt(st.nextToken());
}
}
dp[0][0] = arr[0][0];
dp[0][1] = arr[0][1];
dp[0][2] = arr[0][2];
// 양 옆 집과 색이 곂치면 안되므로 본인 색을 제외한 나머지 색 중 최소값을 찾아 더한다.
for (int i = 1; i < N; i++) {
dp[i][0] = Math.min(dp[i - 1][1], dp[i - 1][2]) + arr[i][0];
dp[i][1] = Math.min(dp[i - 1][0], dp[i - 1][2]) + arr[i][1];
dp[i][2] = Math.min(dp[i - 1][0], dp[i - 1][1]) + arr[i][2];
}
// 모든 경우의 수를 계산했으므로 마지막 집을 기준으로 최솟값을 출력한다.
System.out.println(Math.min(dp[N - 1][0], Math.min(dp[N - 1][1], dp[N - 1][2])));
}
}
'알고리즘(코딩테스트)' 카테고리의 다른 글
백준 2294번 동전 2(JAVA) (0) | 2022.03.02 |
---|---|
백준 15683번 감시(JAVA) (0) | 2022.03.02 |
백준 1932번 정수 삼각형(JAVA) (0) | 2022.03.01 |
백준 9095번 1, 2, 3 더하기(JAVA) (0) | 2022.03.01 |
백준 11726번 2xn 타일링(JAVA) (0) | 2022.02.28 |
댓글