PS/Baekjoon
[Baekjoon] 1764 - 듣보잡
서현 SEOHYEON
2023. 7. 7. 10:33
📝 문제
🔑 풀이 과정
이 문제는 듣도 보도 못한 사람의 집합과 보도 못한 사람의 집합 총 2개의 집합의 교집합을 구하는 기본적인 집합 문제이다.
어려운 건 없었고, HashSet을 정렬하려면 List로 변환시킨 후 정렬해야 된다는 것을 알았다.
🔓 답안
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringBuilder sb = new StringBuilder();
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken()); //듣도 못한 사람의 수
int M = Integer.parseInt(st.nextToken()); //보도 못한 사람의 수
Set<String> set1 = new HashSet<>(); //듣도 못한 사람을 넣을 집합
Set<String> set2 = new HashSet<>(); //보도 못한 사람을 넣을 집합
//N명의 사람을 집합에 넣음(듣도 못한 사람)
for(int i = 0; i < N; i++){
set1.add(br.readLine());
}
//M명의 사람을 집합에 넣음(보도 못한 사람)
for(int i = 0; i < M; i++){
set2.add(br.readLine());
}
//교집합 구하기
set1.retainAll(set2);
//정렬
List<String> result = new ArrayList<>(set1); //정렬을 위해서는 HashSet을 List로 바꿔줘야 한다.
Collections.sort(result);
//출력
sb.append(result.size()).append("\n");
for(String str: result){
sb.append(str).append("\n");
}
bw.write(sb.toString());
bw.flush();
bw.close();
}
}
🖤 알고리즘 분류
- 자료 구조
- 문자열
- 정렬
- 해시를 사용한 집합과 맵