문제 바로가기
문제풀이
회사원별로 출퇴근 여부를 확인해야하기 때문에 HashMap을 사용하였다.
key는 회사원 이름, value는 출퇴근 여부 boolean 값으로 초기화했다.
- 해쉬맵이 회사원 key 값을 가지고 있으면 value값만 다시 지정해준다.
- 회사원 key를 가지고 있지 않다면 회사원 정보를 put한다
- 만약 출입기록이 'enter'이면 value는 true이고 아니면 false가 되도록 한다.
- hashmap 내림차순 정렬
- value가 true 일때만 출력
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.StringTokenizer;
public class Main {
static int N;
static StringTokenizer st;
static StringBuilder sb = new StringBuilder();
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
N = Integer.parseInt(br.readLine());
HashMap<String, Boolean> officer = new HashMap<String, Boolean>();
for (int n = 0; n < N; n++) {
st = new StringTokenizer(br.readLine(), " ");
String people = st.nextToken();
boolean isOffice = st.nextToken().equals("enter") ? true : false;
if(officer.containsKey(people)) {
officer.replace(people, isOffice);
}else {
officer.put(people, isOffice);
}
}
Object[] mapkey = officer.keySet().toArray();
Arrays.sort(mapkey, Collections.reverseOrder());
for(Object s : mapkey) {
if(officer.get(s))
sb.append(s).append("\n");
}
System.out.println(sb);
}
}
'Algorithm > BOJ' 카테고리의 다른 글
[BOJ] 경쟁적 전염 for Java - PriorityQueue를 적용한 풀이 (2) | 2022.03.02 |
---|---|
[BOJ] 2606번 바이러스 for JAVA BFS 활용한 풀이 (0) | 2022.01.17 |
[백준] 11047번 동전 0 for JAVA - 탐욕 알고리즘 적용한 풀이 (0) | 2022.01.11 |
[백준] 1806번 부분합 for JAVA - 인덱스 이동 (0) | 2022.01.10 |
[백준] 1764번 듣보잡 for JAVA - HashSet 이용 (0) | 2022.01.07 |