[백준 13414] 수강신청 [Java]

2025. 9. 20. 01:30PS 풀이/Baekjoon Online Judge

문제

http://boj.ma/13414

 

13414번: 수강신청

 

boj.ma

 


풀이

문제 요약

수강 신청 버튼을 클릭한 기록 L개 중 문제의 조건에 맞게 최대 K명의 수강 신청을 처리하자.

아이디어

수강 신청 버튼을 처음에 누른 후 또 눌렀다면 순서가 밀려야 한다. Map을 이용해 학번과 버튼을 누른 순서를 저장하고, 이미 저장이 되있더라도 새로 버튼을 눌렀다면 순서만 업데이트해주자.

Map은 순서가 보장되지 않으므로, 리스트에 담아준 후 버튼을 누른 순서를 기준으로 정렬 후 최대 K명을 뽑으면 된다.

		// Solve
		Map<String, Integer> map = new HashMap<>();
		for (int i = 0; i < L; ++i) {
			map.put(br.readLine(), i);
		}

		List<Map.Entry<String, Integer>> list = new ArrayList<>(map.entrySet());
		list.sort((a, b) -> a.getValue().compareTo(b.getValue()));

		// Output
		StringBuilder sb = new StringBuilder();
		final int SIZE = Math.min(K, list.size());
		for (int i = 0; i < SIZE; ++i) {
			sb.append(list.get(i).getKey()).append("\\n");
		}

풀이시간

10분


소스코드

https://github.com/rogi-rogi/problem-solving/blob/main/baekjoon-online-judge/easy/13414.java

 

problem-solving/baekjoon-online-judge/easy/13414.java at main · rogi-rogi/problem-solving

Daily Problem Solving Challenges. Contribute to rogi-rogi/problem-solving development by creating an account on GitHub.

github.com