본문 바로가기
BOJ

[BOJ] [JAVA] 7785번 회사에 있는 사람

by Parsler 2024. 1. 6.
 

7785번: 회사에 있는 사람

첫째 줄에 로그에 기록된 출입 기록의 수 n이 주어진다. (2 ≤ n ≤ 106) 다음 n개의 줄에는 출입 기록이 순서대로 주어지며, 각 사람의 이름이 주어지고 "enter"나 "leave"가 주어진다. "enter"인 경우는

www.acmicpc.net

HashMap에 이어 TreeMap도 바로 배웠다!

이 문제는 사람 이름이 key, 출근 여부가 value로 부여되는데,

사람 이름의 사전 역순으로 정렬하여 출력해야 하기 때문에 TreeMap을 이용했다.

TreeMap은 key값을 정렬하는 것이 가능하다. 대신 시간이 느리다고 한다.

import java.util.*;
import java.io.*;

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());
		TreeMap <String, String> nameMap = new TreeMap<>(Collections.reverseOrder());
		// TreeMap을 정의할 때 Collenctions의 reverseOrder을 사용하여 사전 역순으로 정렬
		for (int i = 0; i < N; i++) {
			StringTokenizer st = new StringTokenizer(br.readLine());
			String key = st.nextToken();
			String value = st.nextToken();
			nameMap.put(key, value);
		}

		for (Map.Entry<String, String> name : nameMap.entrySet()) {
			if (name.getValue().equals("enter")) {
				System.out.println(name.getKey());
			}
		}
	}
}

Map에서 for-each문을 사용하는 방법도 배웠다.