알고리즘

[백준, 자바, 7785번] 회사에 있는 사람

hminor 2024. 11. 11. 19:40

풀이

  • 처음에는 Map을 사용해서 해당 인물에 대한 상태 변화를 체크 후
  • Key를 배열로 만든 뒤 정렬해서
  • enter의 경우를 찾아 배열에 추가 후 
  • 결과를 뒤집어서 출력하여 해결
  • 다만 Set으로 하는 방법도 하고 싶어서
  • enter일 땐 추가, 아닐 땐 제거하고,
  • 이후에 Set를 List로 변환 뒤, 내림차순 정렬하여 해결

 

 

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

public class _7785 {
//    public static void main(String[] args) throws IOException {
//        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
//        StringTokenizer st;
//        int N = Integer.parseInt(br.readLine());
//        Map<String, String> dic = new HashMap<>();
//        for (int i=0; i<N; i++) {
//            st = new StringTokenizer(br.readLine());
//            String k = st.nextToken();
//            String v = st.nextToken();
//            dic.put(k,v);
//        }
//        List<String> result = new ArrayList<>();
//        List<String> dic_li = new ArrayList<>(dic.keySet());
//        Collections.sort(dic_li);
//        for (int i=0; i<dic_li.size(); i++) {
//            if (dic.get(dic_li.get(i)).equals("enter")) result.add(dic_li.get(i));
//        }
//        Collections.reverse(result);
//        for (String name: result) bw.write(name+"\n");
//        bw.flush();
//    }


    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        StringTokenizer st;
        int N = Integer.parseInt(br.readLine());
        Set<String> s_li = new HashSet<>();
        while (N>0) {
            st = new StringTokenizer(br.readLine());
            String nm = st.nextToken();
            String cmd = st.nextToken();
            if (cmd.equals("enter")) s_li.add(nm);
            else s_li.remove(nm);
            N--;
        }
        List<String> result = new ArrayList<>(s_li);
        Collections.sort(result, Collections.reverseOrder());
        for (String name: result) bw.write(name+"\n");
        bw.flush();
    }
}