[Java] 백준 - 1268번 : 임시 반장 정하기 (Bronze I)

배똥회장·2022년 8월 8일
0
post-custom-banner

📝 문제

백준 - 1268번: 임시 반장 정하기


📝 답안

📌 작성 코드

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);
	}
}

📌 결과


📌 Point

범위가 중요하더라... [n][n] 으로 만들었다가 학년은 5학년까지로 딱 정해져있기 때문에 이런 사소한 범위가 엄청난 차이를 발생시킴...

profile
어쩌면 개발자
post-custom-banner

0개의 댓글