알고리즘
[백준, 자바, 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();
}
}