728x90
[백준] 1746번 - 듣보잡 (JAVA)
[ 접근 과정 ]
HashMap을 활용하여 해결하였다.
듣도 못한 사람이름을 key 로 하고, value는 1로 한다.
해시에 해당 key가 존재하는지를 판단하는 containsKey 함수를 활용하여 듣도 못한 사람과 보도 못한 사람에 동시에 선정된 사람을 찾아낸다.
[ JAVA 코드 ]
// 1764번 - 듣보잡
// 해시로 해결해보기
import java.util.*;
import java.io.*;
class Main {
public static void main(String[] args) throws IOException {
// 0. 입출력 선언 / 초기화
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
// 1. 해시에 듣도 못한 사람들 저장
HashMap<String, Integer> hash = new HashMap<>();
for(int i=0; i<N; i++){
String name = br.readLine();
hash.put(name, 1);
}
// 2. 해시에 보도 못한 사람들이 존재하는지 검색
ArrayList<String> arr = new ArrayList<>();
for(int i=0; i<M; i++){
String name = br.readLine();
if(hash.containsKey(name)){
arr.add(name);
}
}
// 3. 출력 (* 듣보잡의 수와 그 명단을 사전순으로 출력한다.)
bw.write(arr.size() + "\n");
Collections.sort(arr);
for(int i=0; i<arr.size(); i++){
bw.write(arr.get(i) + "\n");
}
bw.flush();
bw.close();
br.close();
}
}
[ Rewind ]
1. 어려웠던 점
- "Hash를 어떻게 활용할 것인가" 를 판단하는 것
- 사전순으로 출력한다는 것을 안읽어서 고생함.
2. 알게된 점
- Hash 내에 해당 key가 존재하는지를 판단하는 함수
: containsKey()
3. 개선 방향
- Hash를 적극적으로 활용하여 문제를 해결해야 한다.
- 문제를 끝까지 꼼꼼하게 읽자!
728x90
'백준' 카테고리의 다른 글
[백준] 5052번 - 전화번호 목록 (JAVA) (0) | 2023.02.06 |
---|---|
[백준] 9375번 - 패션왕 신해빈 (JAVA) (0) | 2023.02.05 |
[백준] 10816번 - 숫자 카드 2 (JAVA) (0) | 2023.02.04 |
[백준] 큰 수 A + B (10757번 JAVA) (0) | 2023.01.10 |
[백준] -2진수 (2089번 JAVA) (0) | 2023.01.10 |