🌞Algorithm/🔥Baekjoon

[Baekjoon] 21508_Список школ

뿌야._. 2025. 9. 12. 11:23
문제(출처: https://www.acmicpc.net/problem/21508)

< Список школ >

 

문제 풀이 

 

HashMap을 사용하여 5명 이하 등록된 학교를 구한다.

 

my solution (Java)

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.StringTokenizer;

public class _21508_ { // Список школ

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

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

		HashMap<String, Integer> map = new HashMap<>();
		for (int i = 0; i < n; i++) {
			st = new StringTokenizer(bf.readLine());

			String num = "";
			boolean flag = false;
			while (st.hasMoreTokens()) {
				String str = st.nextToken();

				for (int j = 0; j < str.length(); j++) {
					if (Character.isDigit(str.charAt(j))) {
						num += str.charAt(j);
						flag = true;
					} else {
						if (flag) {
							break;
						}
					}
				}
				if (flag) {
					break;
				}
			}
			if (map.containsKey(num)) {
				map.replace(num, map.get(num) + 1);
			} else {
				map.put(num, 1);
			}
		}

		ArrayList<String> result = new ArrayList<>();
		for (String i : map.keySet()) {
			if (map.get(i) <= 5) {
				result.add(i);
			}
		}

		bw.write(result.size() + "\n");
		for (String i : result) {
			bw.write(i + "\n");
		}
		bw.flush();
	}
}
변수)
n : 학교 수
map : 학교별 등록된 수
num : 학교 번호
flag : 학교 번호 확인 여부
result : 5명 이하 등록된 학교

 

학교 수를 입력받는다. 학교 수만큼 학교 이름을 입력받아 다음 과정을 거친다.

 

1) 학교 이름을 탐색하며 숫자 구하기

2) HashMap에 학교 번호가 있다면 value만 증가하고, 학교 번호가 없다면 추가

 

HashMap을 순회하며 value가 5 이하인 값을 찾아 ArrayList에 key 값을 저장한다. 최종 ArrayList의 크기와 값을 출력한다.



 

'🌞Algorithm > 🔥Baekjoon' 카테고리의 다른 글

[Baekjoon] 17873_Regional Team Names  (0) 2025.09.11
[Baekjoon] 15832_Aku Negaraku  (0) 2025.09.10
[Baekjoon] 17857_Musical Chairs  (0) 2025.09.09
[Baekjoon] 6149_Card Stacking  (0) 2025.09.08
[Baekjoon] 14783_Eenie Meenie Miney Moe  (1) 2025.08.29