7785번: 회사에 있는 사람
첫째 줄에 로그에 기록된 출입 기록의 수 n이 주어진다. (2 ≤ n ≤ 106) 다음 n개의 줄에는 출입 기록이 순서대로 주어지며, 각 사람의 이름이 주어지고 "enter"나 "leave"가 주어진다. "enter"인 경우는
www.acmicpc.net
HashMap에 이어 TreeMap도 바로 배웠다!
이 문제는 사람 이름이 key, 출근 여부가 value로 부여되는데,
사람 이름의 사전 역순으로 정렬하여 출력해야 하기 때문에 TreeMap을 이용했다.
TreeMap은 key값을 정렬하는 것이 가능하다. 대신 시간이 느리다고 한다.
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
TreeMap <String, String> nameMap = new TreeMap<>(Collections.reverseOrder());
// TreeMap을 정의할 때 Collenctions의 reverseOrder을 사용하여 사전 역순으로 정렬
for (int i = 0; i < N; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
String key = st.nextToken();
String value = st.nextToken();
nameMap.put(key, value);
}
for (Map.Entry<String, String> name : nameMap.entrySet()) {
if (name.getValue().equals("enter")) {
System.out.println(name.getKey());
}
}
}
}
Map에서 for-each문을 사용하는 방법도 배웠다.
'BOJ' 카테고리의 다른 글
[BOJ] [JAVA] 9012번 괄호 (1) | 2024.01.07 |
---|---|
[BOJ] [JAVA] 4134번 다음 소수 (0) | 2024.01.07 |
[BOJ] [JAVA] 13241번 최소공배수 (0) | 2024.01.06 |
[BOJ] [JAVA] 10816번 숫자 카드 2 (0) | 2024.01.06 |
[BOJ] [JAVA] 18870번 좌표 압축 (2) | 2024.01.06 |
[BOJ] [JAVA] 10815번 숫자 카드 (1) | 2024.01.06 |
[Programmers][Python] 소수 찾기 (0) | 2023.12.29 |
[BOJ] [JAVA] 11650번 좌표 정렬하기 (0) | 2023.12.28 |