코딩테스트/백준
[Java] 백준 - 1268번 : 임시 반장 정하기
배똥회장
2022. 8. 8. 15:55
728x90
코딩 테스트 풀이 체크리스트 |
|
2시간 내에 풀었는가? | O |
본인의 실력으로 풀었는가? | O |
1268번: 임시 반장 정하기
오민식 선생님은 올해 형택초등학교 6학년 1반 담임을 맡게 되었다. 오민식 선생님은 우선 임시로 반장을 정하고 학생들이 서로 친숙해진 후에 정식으로 선거를 통해 반장을 선출하려고 한다.
www.acmicpc.net
import java.io.*;
import java.util.*;
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());
int[][] table = new int[n][5];
boolean[][] list = new boolean[n][n];
for (int i = 0; i < n; i++) {
String[] s = br.readLine().split(" ");
for (int j = 0; j < s.length; j++) {
table[i][j] = Integer.parseInt(s[j]);
}
}
//1학년부터 5학년까지 반복
for (int i = 0; i < 5; i++) {
//반 수는 9반까지 있으니까 10으로 범위 지정
ArrayList<Integer>[] temp = new ArrayList[10];
//학년에 따른 학생 반복 (해당 학년 때 같은 반인 학생들 모으기 위한 for문)
for (int j = 0; j < n; j++) {
//만약 j번 학생의 i학년의 반에 대한 array가 없을 때 새로 만들기
if (temp[table[j][i]] == null) temp[table[j][i]] = new ArrayList<>();
//array에 j번 추가
temp[table[j][i]].add(j);
}
//학년에 따른 학생 반복 (해당 학년 때 같은 반인 학생 체크하기 위한 for문)
for (int j = 0; j < n; j++) {
//몇 반이었는지 가져오기
int num = table[j][i];
//같은 반 학생들 리스트 가져오기
ArrayList<Integer> data = temp[num];
//학생에 따른 같은 반 학생이었던 학생 체크하기 위한 for문
for (int k = 0; k < data.size(); k++) {
if (j == data.get(k)) continue;
list[j][data.get(k)] = true;
}
}
}
int max = 0;
int index = 0;
for (int i = 0; i < n; i++) {
int num = 0;
for (int j = 0; j < n; j++) {
if (list[i][j]) num++;
}
if (max < num) {
max = num;
index = i;
}
}
System.out.println(index+1);
}
}
문제 | 결과 | 메모리 | 시간 | 코드 길이 |
1268 | 맞았습니다!! | 18732 KB | 260 ms | 1188 B |
728x90