백준 7785 : 회사에 있는 사람 (Java)
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
// Scanner가 오래 걸려서 BufferedReader 사용
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// sout이 오래 걸려서 BufferedWriter 사용
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
// 띄어쓰기가 포함된 한 라인 받기 위해 StringTokenizer 사용
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
// 순서가 보장된 Map을 사용하기 위해 LinkedHashMap 사용
Map<String, String> res = new LinkedHashMap<>();
// 받은 라인을 띄어쓰기 별로 저장해서 LinkedHashMap에 저장
// 저장하기 전에 같은 key 값이 있고 value가 leave면 기존에 저장된 값 삭제후 continue
for(int i = 0; i < N; i++) {
st = new StringTokenizer(br.readLine(), " ");
String key = st.nextToken();
String value = st.nextToken();
if (res.containsKey(key) && value.equals("leave")) {
res.remove(key);
continue;
}
// 기존에 enter한 사람이 없으면 res에 저장
res.put(key, value);
}
// 정렬을 위해 TreeMap에 기존 값 할당
// descendingMap()을 사용하여 역순으로
Map<String, String> tmp = new TreeMap<>(res).descendingMap();
for (String sKey : tmp.keySet()) {
bw.write(sKey + "\n");
}
bw.flush();
bw.close();
br.close();
}
}