🌞Algorithm/πŸ”₯Baekjoon

[Baekjoon] 1268_μž„μ‹œ 반μž₯ μ •ν•˜κΈ°

λΏŒμ•Ό._. 2024. 5. 15. 21:28

Silver V

문제(좜처: https://www.acmicpc.net/problem/1268)

< μž„μ‹œ 반μž₯ μ •ν•˜κΈ° >

 

문제 풀이 

 

같은 λ°˜μ΄μ—ˆλ˜ 학생을 μ°Ύμ•„ 같은 λ°˜μ΄μ—ˆλ˜ μ‚¬λžŒμ΄ κ°€μž₯ λ§Žμ€ 학생을 μ°ΎλŠ”λ‹€. 쀑볡을 μ œκ±°ν•˜κΈ° μœ„ν•΄ HashSet을 μ‚¬μš©ν•œλ‹€.

 

* ν•œ μ‚¬λžŒκ³Ό μ—¬λŸ¬ ν•™λ…„λ™μ•ˆ 같은 λ°˜μ΄μ—ˆλ”λΌλ„ 같은 λ°˜μ΄μ—ˆλ˜ 학생 수λ₯Ό 1둜 μΉ΄μš΄νŠΈν•΄μ•Ό ν•˜λ―€λ‘œ HashSet μ‚¬μš©

 

 my solution (Java)

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.StringTokenizer;

public class _1268_ { // μž„μ‹œ 반μž₯ μ •ν•˜κΈ°

	public static void main(String[] args) throws IOException {
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st;

		int n = Integer.parseInt(bf.readLine());

		int arr[][] = new int[n][5];

		for (int i = 0; i < n; i++) {
			st = new StringTokenizer(bf.readLine());
			for (int j = 0; j < 5; j++) {
				arr[i][j] = Integer.parseInt(st.nextToken());
			}
		}

		ArrayList<HashSet<Integer>> result = new ArrayList<>();
		for (int i = 0; i < n; i++) {
			result.add(new HashSet<>());
		}

		ArrayList<ArrayList<Integer>> list = new ArrayList<>();
		for (int i = 0; i < 10; i++) {
			list.add(new ArrayList<>());
		}

		for (int j = 0; j < 5; j++) {
			for (int i = 0; i < 10; i++) {
				list.get(i).clear();
			}
			for (int i = 0; i < n; i++) {
				list.get(arr[i][j]).add(i);
			}
			for (int i = 0; i < n; i++) {
				if (list.get(arr[i][j]).size() > 1) {
					for (int k = 0; k < list.get(arr[i][j]).size(); k++) {
						result.get(i).add(list.get(arr[i][j]).get(k));
					}
				}
			}
		}

		int max = 0;
		int answer = 0;
		for (int i = 0; i < n; i++) {
			if (max < result.get(i).size()) {
				max = result.get(i).size();
				answer = i;
			}
		}
		System.out.println(answer + 1);
	}
}
λ³€μˆ˜)
n : 반의 학생 수
arr : 각 학생이 μ†ν–ˆλ˜ 반 정보
result : 각 학생과 같은 반 ν–ˆλ˜ 학생 번호
list : 각 ν•™λ…„λ³„λ‘œ 같은 λ°˜μ΄μ—ˆλ˜ 학생 번호
max, answer : 같은 λ°˜μ΄μ—ˆλ˜ μ‚¬λžŒμ΄ κ°€μž₯ λ§Žμ€ 학생 수, 학생 번호

 

반의 학생 수 n을 μž…λ ₯λ°›λŠ”λ‹€. 각 ν•™μƒμ˜ 반 정보λ₯Ό μž…λ ₯λ°›μ•„ arr에 μ €μž₯ν•œλ‹€. ν•™λ…„λ³„λ‘œ 학생이 μ†ν•œ λ°˜μ„ μ‚΄νŽ΄λ³΄λ©° 같은 λ°˜μ΄μ—ˆλ˜ 학생끼리 λ¬Άμ–΄λ‘”λ‹€. κ·Έ ν›„ 각 ν•™μƒλ³„λ‘œ μžμ‹ κ³Ό 같은 λ°˜μ΄μ—ˆλ˜ 학생 번호λ₯Ό μ €μž₯ν•œλ‹€. μ΅œμ’… resultλ₯Ό μ‚΄νŽ΄λ³΄λ©° 같은 λ°˜μ΄μ—ˆλ˜ μ‚¬λžŒμ΄ κ°€μž₯ λ§Žμ€ 학생을 μ°Ύμ•„ 좜λ ₯ν•œλ‹€.