반응형
N개의 문자열을 입력받고 이를 S라는 집합이라 할 때, M개의 문자열 중 몇 개가 집합 S에 포함되는가를 찾는 문제.
HashSet을 이용하면 간단히 해결할 수 있을 듯 하다.
2023.10.17 - [Java/개념정리] - [Java] HashSet 에 대해 알아보자
먼저 n과 m을 입력받는다.
Scanner로 입력받는다면 nextInt()로 간단히 입력받을 수 있지만
BufferedReader로 입력받기 위해서는 StringTokenizer를 이용하면 된다.
2023.10.25 - [Java/개념정리] - [Java] 문자열 분리 (split, StringTokenizer 사용법)
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine()); // 입력받은 문자열 분리
int n = Integer.parseInt(st.nextToken()); // 첫번째 문자
int m = Integer.parseInt(st.nextToken()); // 두번째 문자
이제 Hash를 생성하여 n개만큼 입력받은 문자열을 차례로 Hash에 추가해준다.
HashSet<String> word = new HashSet<String>(); // Hash 생성
for (int i = 0; i < n; i++) {
word.add(br.readLine()); // Hash에 추가
}
다시 m개만큼 입력받고, 입력받은 문자열이 Hash에 포함되어 있다면, count를 증가시켜준다.
int count = 0;
for (int i = 0; i < m; i++) {
if (word.contains(br.readLine())) { // 입력받은 문자열이 Hash에 포함되어 있다면
count++;
}
}
전체 코드는 다음과 같다.
// 해설참조 : sehyeok.tistory.com
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashSet;
import java.util.StringTokenizer;
public class Main {
public static void main(String args[]) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine()); // 입력받은 문자열 분리
int n = Integer.parseInt(st.nextToken()); // 첫번째 문자
int m = Integer.parseInt(st.nextToken()); // 두번째 문자
HashSet<String> word = new HashSet<String>(); // Hash 생성
int count = 0;
for (int i = 0; i < n; i++) {
word.add(br.readLine());
}
for (int i = 0; i < m; i++) {
if (word.contains(br.readLine())) {
count++;
}
}
System.out.println(count);
}
}
반응형
'Java > 백준알고리즘' 카테고리의 다른 글
[Java] 백준알고리즘 #11659 구간 합 구하기 4 (66) | 2023.12.12 |
---|---|
[Java] 백준알고리즘 #7785 회사에 있는 사람 (63) | 2023.10.26 |
[Java] 백준알고리즘 #10815 숫자 카드 (67) | 2023.10.25 |
[Java] 백준알고리즘 #25501 재귀의 귀재 (1) | 2023.10.23 |
[Java] 백준알고리즘 #10870 피보나치 수 5 (9) | 2023.10.19 |