Skip to content

Commit e1cccb2

Browse files
authored
[백준 1727] 커플 만들기 - DP, 그리디
1 parent 3ea4ae7 commit e1cccb2

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed

hoseok/week79/Boj1727.java

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
import java.io.*;
2+
import java.util.*;
3+
4+
class Main {
5+
public static void main(String[] args) throws Exception {
6+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
7+
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
8+
StringTokenizer st = new StringTokenizer(br.readLine());
9+
int n = Integer.parseInt(st.nextToken());
10+
int m = Integer.parseInt(st.nextToken());
11+
int[] man = new int[n];
12+
int[] woman = new int[m];
13+
14+
st = new StringTokenizer(br.readLine());
15+
for (int i = 0; i < n; i++) {
16+
man[i] = Integer.parseInt(st.nextToken());
17+
}
18+
19+
st = new StringTokenizer(br.readLine());
20+
for (int i = 0; i < m; i++) {
21+
woman[i] = Integer.parseInt(st.nextToken());
22+
}
23+
24+
Arrays.sort(man);
25+
Arrays.sort(woman);
26+
27+
int[][] dp = new int[n + 1][m + 1];
28+
29+
for (int i = 0; i < n; i++) {
30+
for (int j = 0; j < m; j++) {
31+
if (i == j) {
32+
dp[i + 1][j + 1] = Math.abs(man[i] - woman[j]) + dp[i][j];
33+
} else if (i < j) {
34+
dp[i + 1][j + 1] = Math.min(dp[i + 1][j], dp[i][j] + Math.abs(man[i] - woman[j]));
35+
} else {
36+
dp[i + 1][j + 1] = Math.min(dp[i][j + 1], dp[i][j] + Math.abs(man[i] - woman[j]));
37+
}
38+
}
39+
}
40+
41+
42+
bw.write(Integer.toString(dp[n][m]));
43+
bw.flush();
44+
bw.close();
45+
}
46+
}

0 commit comments

Comments
 (0)