Skip to content

Commit db7f68e

Browse files
committed
이지영: [BOJ] 2461 대표 선수_241031
1 parent 26236a1 commit db7f68e

File tree

1 file changed

+60
-0
lines changed

1 file changed

+60
-0
lines changed

BOJ/1000-5000번/JY_2461.java

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
package day1031;
2+
3+
import java.io.*;
4+
import java.util.*;
5+
6+
public class JY_2461 {
7+
8+
public static void main(String[] args) throws IOException{
9+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
10+
StringTokenizer st = new StringTokenizer(br.readLine());
11+
12+
int N = Integer.parseInt(st.nextToken());
13+
int M = Integer.parseInt(st.nextToken());
14+
15+
int[][] srr = new int[N][M];
16+
for(int i=0; i<N; i++) {
17+
st = new StringTokenizer(br.readLine());
18+
for(int j=0; j<M; j++) {
19+
srr[i][j] = Integer.parseInt(st.nextToken());
20+
}
21+
}
22+
23+
// 각 반 정렬
24+
for(int i=0; i<N; i++) {
25+
Arrays.sort(srr[i]);
26+
}
27+
28+
// 각 반의 학생 인덱스 포인터 배열
29+
int[] n = new int[N];
30+
31+
int ans = Integer.MAX_VALUE;
32+
while(true) {
33+
int max = Integer.MIN_VALUE;
34+
int min = Integer.MAX_VALUE;
35+
int minIdx = -1;
36+
37+
// 각 반 반복
38+
for(int i=0; i<N; i++) {
39+
int j = n[i]; // 각 반이 현재 가리키고 있는 학생
40+
if(max < srr[i][j]) {
41+
max = srr[i][j];
42+
}
43+
if(min > srr[i][j]) {
44+
min = srr[i][j];
45+
minIdx = i;
46+
}
47+
}
48+
49+
ans = Math.min(ans, max-min);
50+
n[minIdx]++;
51+
if(n[minIdx] == M) break;
52+
53+
}
54+
55+
System.out.println(ans);
56+
57+
}
58+
59+
60+
}

0 commit comments

Comments
 (0)