Skip to content

Commit 25fe4c8

Browse files
committed
이지원_RGB거리 코드,리드미
1 parent e70864c commit 25fe4c8

File tree

2 files changed

+69
-0
lines changed

2 files changed

+69
-0
lines changed
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
# [1149] RGB 거리 - Java
2+
3+
### :octocat: 분류
4+
5+
> DP
6+
7+
### :octocat: 코드
8+
9+
```java
10+
import java.io.BufferedReader;
11+
import java.io.InputStreamReader;
12+
import java.util.StringTokenizer;
13+
14+
public class week24_RGB거리 {
15+
public static void main(String[] args) throws Exception {
16+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
17+
StringTokenizer st;
18+
int N = Integer.parseInt(br.readLine());
19+
int[] color = new int[3];
20+
int[][] dp = new int[N][3];
21+
22+
for(int i=0; i<N; i++) {
23+
st = new StringTokenizer(br.readLine());
24+
for(int j=0; j<3; j++) color[j] = Integer.parseInt(st.nextToken());
25+
if(i == 0) for(int j=0; j<3; j++) dp[i][j] = color[j];
26+
else {
27+
dp[i][0] = Math.min(dp[i-1][1], dp[i-1][2]) + color[0];
28+
dp[i][1] = Math.min(dp[i-1][0], dp[i-1][2]) + color[1];
29+
dp[i][2] = Math.min(dp[i-1][0], dp[i-1][1]) + color[2];
30+
}
31+
}
32+
System.out.println(Math.min(dp[N-1][0], Math.min(dp[N-1][1], dp[N-1][2])));
33+
}
34+
}
35+
```
36+
37+
### :octocat: 풀이 방법
38+
39+
1. n번째 B를 칠하는 값중 최솟값은 n-1에 R을 칠한경우와 G를 칠한경우 중 더 작은 값을 가진 경우에 B를 더한 값이다.
40+
2. 같은 방법으로 n번째에 R, G, B를 각각 칠한 경우 최솟값이 정답이 된다.
41+
42+
### :octocat: 후기
43+
44+
dp는 아무리 오래 생각해도 안보이면 말짱 도루묵인듯..
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import java.io.BufferedReader;
2+
import java.io.InputStreamReader;
3+
import java.util.StringTokenizer;
4+
5+
public class week24_RGB거리 {
6+
public static void main(String[] args) throws Exception {
7+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
8+
StringTokenizer st;
9+
int N = Integer.parseInt(br.readLine());
10+
int[] color = new int[3];
11+
int[][] dp = new int[N][3];
12+
13+
for(int i=0; i<N; i++) {
14+
st = new StringTokenizer(br.readLine());
15+
for(int j=0; j<3; j++) color[j] = Integer.parseInt(st.nextToken());
16+
if(i == 0) for(int j=0; j<3; j++) dp[i][j] = color[j];
17+
else {
18+
dp[i][0] = Math.min(dp[i-1][1], dp[i-1][2]) + color[0];
19+
dp[i][1] = Math.min(dp[i-1][0], dp[i-1][2]) + color[1];
20+
dp[i][2] = Math.min(dp[i-1][0], dp[i-1][1]) + color[2];
21+
}
22+
}
23+
System.out.println(Math.min(dp[N-1][0], Math.min(dp[N-1][1], dp[N-1][2])));
24+
}
25+
}

0 commit comments

Comments
 (0)