문제링크
접근한 방법
- 해시맵
풀이방법
- "enter"일 때는 hashmap에 값을 true로 넣어주고
"leave"일 때는 hashmap에 값을 false로 대체한다. - hashmap을 배열로 변환하여 정렬을 수행한다.
소스코드 작성 방법
- hashmap을 키는 String, 값은 Boolean으로 선언한다.
- StringTokenizer로 입력을 받아
"enter"일 때 key는 이름으로 값은 true로 put한다.
"leave"일 때 key는 이름으로 값은 false로 replace한다. - 키를 배열로 변경하여 저장하고,
Arrays.sort와 Collections.reverseOrder()로 역순으로 정렬한다. - 반복문을 돌며 hashmap의 키 값이 true일 때 출력한다.
소스코드
package baekjoon.array_map_using_hash;
import java.io.*;
import java.util.*;
public class Q_7785_PeopleInCompany {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = Integer.parseInt(br.readLine());
HashMap<String, Boolean> hashMap = new HashMap<>();
for (int i = 0; i < n; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
String name = st.nextToken();
String type = st.nextToken();
if(type.equals("enter")) {
hashMap.put(name, true);
} else if(type.equals("leave")){
hashMap.replace(name,false);
}
}
// 키를 배열로 변경
Object[] arrKey = hashMap.keySet().toArray();
Arrays.sort(arrKey, Collections.reverseOrder());
for(Object s : arrKey) {
if(hashMap.get(s))
bw.write(s+"\n");
}
br.close();
bw.close();
}
}
반응형
'자료구조&알고리즘 > 해시를 사용한 집합과 맵' 카테고리의 다른 글
[백준] 해시를 사용한 집합과 맵 - 2910번 빈도 정렬 (Java) (0) | 2022.06.29 |
---|---|
[백준] 해시를 사용한 집합과 맵 - 13414번 수강신청 (Java) (0) | 2022.06.28 |
해시맵 (0) | 2022.06.17 |
댓글