Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
Tags
- 백준
- 와일드카드
- this
- Encapsulation
- python
- 객체지향
- 버퍼비우기
- Scanner
- 내부 클래스
- java
- 객체 지향
- 상속
- polymorphism
- 제네릭
- 최소신장트리
- Final
- abstract
- enum
- inheritance
- nextInt
- 17472
- 추상 클래스
- 추상화
- 캡슐화
- 다형성
- 열거형
- 인터페이스
- 생성자
- 프림알고리즘
Archives
- Today
- Total
쫑쫑이의 블로그
백준 17404 RGB거리 2 Java [DP] 본문
https://www.acmicpc.net/problem/17404
17404번: RGB거리 2
첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나
www.acmicpc.net
저번에 풀었던 RGB거리 문제와 비슷하지만 N번 집과 1번 집이 다른 색으로 칠해져야하는 조건이 추가됐다
첫번째 집에 칠하는 색에 따라 dp를 따로 해서 마지막 줄에서 다른 색 비용을 더한 값 중에서 최소값들을 비교해주면 된다
첫 두줄을 미리 계산하고 다음 줄부터 dp를 해줬다
import java.io.*;
import java.util.*;
public class Main {
static final int INF = 2_000_000;
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[3][3];
int[] arr = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
int[] next = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
int result = INF;
for (int i = 0; i < 3; i++) {
dp[i] = next.clone();
dp[i][i] += INF;
for (int j = 0; j < 3; j++) dp[i][j] += arr[i];
}
for (int n = 2; n < N; n++) {
arr = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
for (int i = 0; i < 3; i++) {
int[] now = new int[3];
for (int j = 0; j < 3; j++) {
now[j] = arr[j] + Math.min(dp[i][(j+1)%3], dp[i][(j+2)%3]);
}
dp[i] = now;
}
}
for (int i = 0; i < 3; i++) {
int cost = Math.min(dp[i][(i+2)%3], dp[i][(i+1)%3]);
result = Math.min(result, cost);
}
System.out.println(result);
}
}
'알고리즘 > 백준' 카테고리의 다른 글
백준 1197 최소 스패닝 트리 Java [최소스패닝트리, 프림] (0) | 2022.10.27 |
---|---|
백준 1202 보석 도둑 Java [그리디, 우선순위큐] (1) | 2022.10.24 |
백준 14003 가장 긴 증가하는 부분 수열 5 Java [LIS] (0) | 2022.10.22 |
백준 12738 가장 긴 증가하는 부분 수열 3 Java [LIS] (0) | 2022.10.22 |
백준 12015 가장 긴 증가하는 부분 수열 2 Java [LIS] (0) | 2022.10.22 |