728x90
반응형
❓문제
RGB거리에는 집이 N개 있다. 거리는 선분으로 나타낼 수 있고, 1번 집부터 N번 집이 순서대로 있다.
집은 빨강, 초록, 파랑 중 하나의 색으로 칠해야 한다. 각각의 집을 빨강, 초록, 파랑으로 칠하는 비용이 주어졌을 때, 아래 규칙을 만족하면서 모든 집을 칠하는 비용의 최솟값을 구해보자.
- 1번 집의 색은 2번 집의 색과 같지 않아야 한다.
- N번 집의 색은 N-1번 집의 색과 같지 않아야 한다.
- i(2 ≤ i ≤ N-1)번 집의 색은 i-1번, i+1번 집의 색과 같지 않아야 한다.
🔠 입력
첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 같은 자연수이다.
🖨️출력
첫째 줄에 모든 집을 칠하는 비용의 최솟값을 출력한다.
✍️ 예제 입력
3
26 40 83
49 60 57
13 89 99
✔️ 예제 출력
96
✍️ 예제 입력
3
1 100 100
100 1 100
100 100 1
✔️ 예제 출력
3
✍️ 예제 입력
3
1 100 100
100 100 100
1 100 100
✔️ 예제 출력
102
✍️ 예제 입력
6
30 19 5
64 77 64
15 19 97
4 71 57
90 86 84
93 32 91
✔️ 예제 출력
208
💡해설
집을 돌면서 이전에 사용하지 않았던 색 중 작은 값을 더해서 결과를 내도록 해봤는데 정답이 아니었다. 최솟값을 구하기 위해서 전부다 값 확인이 필요했다.
규칙을 찾고 답을 구해야한다.
첫 번째 문제를 예로 들면 첫 째줄에
26 40 83이 들어오고 두 번째 줄에는 첫 째줄에 구한값의 최솟값과 더한 결과를 넣어주고 n번째 집까지 간 다음 n번째 집 중 최솟값을 출력하면 된다.
26 40 83
89(49+40) | 86(60+26) | 83(57+26) |
96(83+13) | 172(89+83) | 182(99+13) |
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
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());
String input = "";
int[][] arr = new int[n][3];
for (int i = 0; i < n; i++) {
input = br.readLine();
arr[i][0] = (Integer.parseInt(input.split(" ")[0]));
arr[i][1] = (Integer.parseInt(input.split(" ")[1]));
arr[i][2] = (Integer.parseInt(input.split(" ")[2]));
}
for (int i = 1; i < n; i++) {
int red = arr[i][0];
int green = arr[i][1];
int blue = arr[i][2];
arr[i][0] = red + Math.min(arr[i - 1][1], arr[i - 1][2]);
arr[i][1] = green + Math.min(arr[i - 1][0], arr[i - 1][2]);
arr[i][2] = blue + Math.min(arr[i - 1][1], arr[i - 1][0]);
}
System.out.println(Math.min(Math.min(arr[n - 1][0], arr[n - 1][1]), arr[n - 1][2]));
}
}
728x90
반응형
'알고리즘' 카테고리의 다른 글
백준 2805번 나무자르기 자바 풀이 (0) | 2022.11.23 |
---|---|
백준 7562번 나이트의 이동 자바 풀이 (0) | 2022.11.22 |
백준 11726번 2×n 타일링 자바 풀이 (0) | 2022.11.17 |
백준 1743번 음식물 피하기 자바 풀이 (0) | 2022.11.15 |
백준 9012번 괄호 자바 풀이 (0) | 2022.11.14 |