[백준] 7785번: 회사에 있는 사람(JAVA)
2022. 1. 4. 13:57ㆍ알고리즘
https://www.acmicpc.net/problem/7785
문제설명
현재 회사에 있는 사람을 구하는 문제인데, 예를 들면 Baha enter후 Baha leave라는 입력이 들어오면 Baha라는 사람은 퇴근을 한 것이므로 현재 회사에 없다.
즉 enter만 있는 사람들만 현재 회사에 있는 것이다.
코드
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
HashMap<String, String> map = new HashMap<String, String>();
for (int i = 0; i < n; i++) {
String name = sc.next();
String state = sc.next();
if (map.containsKey(name)) {
map.remove(name);
} else {
map.put(name, state);
}
}
ArrayList<String> list = new ArrayList<String>(map.keySet());
Collections.sort(list, Collections.reverseOrder());
for(var li : list) {
System.out.print(li + " ");
}
}
}
코드설명
코드는 매우 간단하다. 그냥 HashMap key값에 이름들을 넣고 만약에 key 값이 한 번 더 나온다 하면 그 key값을 HashMap에서 삭제하였다.
(여기서 굳이 value값으로 비교할 필요가 없는 게 만약 동일한 key값이 두 번 나왔으면 그거는 무조건 enter 후 leave이므로 key값 포함 여부만 확인하면 된다.)
그러고 나서 ArrayList에 넣어서 사전 순의 역순으로 정렬을 해주고 출력을 하였다.
'알고리즘' 카테고리의 다른 글
[백준] 1850번: 최대공약수 (0) | 2022.01.09 |
---|---|
[백준] 10828번: 스택 (0) | 2022.01.08 |
[백준] 12605번: 단어순서 뒤집기 (JAVA) (2) | 2022.01.06 |
[백준] 2693번: N번째 큰 수 (JAVA) (0) | 2022.01.03 |
[백준] 24039번: 2021은 무엇이 특별할까? (0) | 2022.01.03 |