

내 풀이 : TreeMap 사용 - 정답
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception {
// 꼴에 지만 출세한 상근이네 회사에 남아있는 사람 구하는 문제
// 여러 자료구조 중, Map을 사용해본다.
// 맵에 테스트케이스를 입력받는다.
// 조건문을 사용해서 leave를 받으면 enter도 같이 삭제한다.
// 내림차순으로 출력해야하므로 TreeMap의 reverseOrder를 사용한다.
Scanner sc = new Scanner(System.in);
StringBuilder sb = new StringBuilder();
int num = sc.nextInt();
Map<String, String> map = new TreeMap<>(Comparator.reverseOrder());
// 놀랍게도? 이렇게 넣는답니다. 헐~
for (int i = 0; i < num; i++) {
map.put(sc.next(), sc.next());
}
// forEach문을 돌려서 s에 map의 key값이 들어감
for (String s : map.keySet()) {
// value변수를 만들어서 map의 value값이 들어감
String value = map.get(s);
// value에 enter가 있으면 s를 출력하겠다.
if (value.equals("enter")){
sb.append(s);
sb.append("\n");
}
}
System.out.println(sb.toString());
}
}
느낀점
현재 회사에 있는 사람의 이름을 사전 순의 역순으로 한 줄에 한 명씩 출력한다.
라는 조건이 있었으므로 TreeMap 뒤에 Comparator.reverseOrder()을 넣어준다.
Arrays.sort할때에는 Collecteions로 시작하는데 Map에서는 Comparator로 시작한다. 명심하자!
Map을 사용할 때 Key값과 Value값을 응용하는게 아직 미숙하다.
forEach문을 사용할 때 map.keySet()을 넣으면 key값을 넣는 것이고,
map.get(key)를 쓰면 value값을 가져온다는걸 명심하자!
단, map.get(value)는 쓸 수 없다.