풀이법
package algo;
import java.util.Scanner;
public class Solution19 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int arr[][] = new int[n+1][3];
for(int i = 1 ; i <= n;i++) {
arr[i][0] = sc.nextInt();
arr[i][1] = sc.nextInt();
arr[i][2] = sc.nextInt();
}// 비용 입력
/*
* 1번 집의 색은 2번 집의 색과 같지 않아야 한다.
* N번 집의 색은 N-1번 집의 색과 같지 않아야 한다. i(2 ≤ i ≤ N-1)번
* 집의 색은 i-1번, i+1번 집의 색과 같지 않아야 한다
*/
for(int i = 2 ; i <= n;i++) {
arr[i][0] += Math.min(arr[i-1][1], arr[i-1][2]); // 빨간색이면 초록 파랑
arr[i][1] += Math.min(arr[i-1][0], arr[i-1][2]); // 초록이면 빨간 파랑
arr[i][2] += Math.min(arr[i-1][0], arr[i-1][1]); // 파랑이면 빨간 초록
}
System.out.println(Math.min(arr[n][0], Math.min(arr[n][1], arr[n][2])));
}
}
* 1번 집의 색은 2번 집의 색과 같지 않아야 한다.
* N번 집의 색은 N-1번 집의 색과 같지 않아야 한다. i(2 ≤ i ≤ N-1)번
* 집의 색은 i-1번, i+1번 집의 색과 같지 않아야 한다
조건이다 따지고보면 서로 인접한 집들은 모두 색이 달라야한다.
그러므로
이전 집이 빨강 -> 초록 파랑
초록 -> 빨강 파랑
파랑 -> 빨강 초록
이점화식을 세워 풀이했다.
'알고리즘 문제풀이' 카테고리의 다른 글
프로그래머스 점프와 순간이동 (0) | 2020.11.23 |
---|---|
백준 14500 테트로미노 (0) | 2020.09.23 |
leet code 53. Maximum Subarray (0) | 2020.09.05 |
프로그래머스 JadenCase 문자열 만들기 (0) | 2020.06.25 |
프로그래머스 올바른 괄호 (0) | 2020.06.24 |
댓글