본문 바로가기
Beakjoon&프로그래머스/Java

[백준/Java] 7785번 회사에 있는 사람

by 현장 2025. 12. 24.

-Code

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

public class BOJ7785 {
    public static void main(String[] args) throws IOException {
        BufferedReader br =
                new BufferedReader(new InputStreamReader(System.in));

        int n = Integer.parseInt(br.readLine());
        Set<String> inLog = new HashSet<>();

        for (int i = 0; i < n; i++) {
            StringTokenizer st = new StringTokenizer(br.readLine());
            String name = st.nextToken();
            String comm = st.nextToken();
			// enter면 저장 아니면 삭제
            if (comm.equals("enter")) {
                inLog.add(name);
            } else {
                inLog.remove(name);
            }
        }
        // 순서 역순 출력
        ArrayList<String> reverseLog = new ArrayList<>(inLog);
        Collections.sort(reverseLog, Collections.reverseOrder());
        for (String name : reverseLog) {
            System.out.println(name);
        }

        br.close();
    }
}

처음에는 ArrayList로 했는데 시간 초과로 틀렸습니다. 찾아보니 HashSet이 내부 해시 함수에 의해서 수가 많아도 O(1)의 시간 복잡도로 해결을 하기고 어차피 중복이 주어지지 않기 때문에 HashSet으로 해결했습니다.