1. 문제 링크
7785번: 회사에 있는 사람
첫째 줄에 로그에 기록된 출입 기록의 수 n이 주어진다. (2 ≤ n ≤ 106) 다음 n개의 줄에는 출입 기록이 순서대로 주어지며, 각 사람의 이름이 주어지고 "enter"나 "leave"가 주어진다. "enter"인 경우는
www.acmicpc.net
2. 문제 및 입출력예제
3. 문제 풀이
간단하게 생각해서 enter가 들어오면 추가하고 leave가 들어오면 삭제하면 된다.
동명이인이 없다는 조건이 있어서 HashSet을 사용해봤다.
마지막에는 정렬을 위해 HashSet을 List로 변환했고 사전의 역순으로 출력하면 끝이다.
Collections.reverse()로 했다가 2%? 4%?에서 틀렸습니다가 나왔고,
알고보니 그냥 리스트를 역으로 출력했던 거였고 Collections.reverseOrder()를 이용해서 사전 역순으로 정렬할 수 있다.
4. 코드
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int N = Integer.parseInt(br.readLine());
Set<String> set = new HashSet<String>();
for(int i=0;i<N;i++) {
String[] log = br.readLine().split(" ");
if(log[1].equals("enter")) {
set.add(log[0]);
}
else {
set.remove(log[0]);
}
}
ArrayList<String> list = new ArrayList<>(set);
Collections.sort(list, Collections.reverseOrder());
for(String s : list) {
sb.append(s+"\n");
}
System.out.println(sb);
}
}
'ALGORITHM' 카테고리의 다른 글
백준 3085 사탕 게임 (Java) (0) | 2023.02.05 |
---|---|
백준 1107 리모컨 (Java) (0) | 2023.02.04 |
백준 9093 단어 뒤집기 (Java) (0) | 2023.02.02 |
백준 2609 최대공약수와 최소공배수 (Java) (0) | 2023.02.01 |
백준 1764 듣보잡 (Java) (0) | 2023.01.31 |