[Baekjoon] 14425번: 문자열 집합 - Java
2023. 3. 4. 15:15ㆍComputer Sciences/Problem Solve
https://www.acmicpc.net/problem/14425
문제 설명
N개의 문자열 집합 S가 주어진다. 그 다음 M개의 문자열이 입력되는데 이 중 집합 S에 포함된 문자열의 개수를 출력하면 된다.
풀이 방법
이렇게 중복체크하는 문제는 Set 자료구조를 활용하면 쉽게 해결할 수 있다. Set의 특징은 요소의 순서가 없으며 중복이 없다. 자바에서 제공하는 Set 중 가장 많이 사용되는 HashSet은 요소 접근에 대해 O(1)의 속도를 가진다. 따라서 이런 문제에 아주 효율적으로 사용할 수 있다.
코드가 길지 않으므로 전체 코드를 바로 본다.
package baekjoon.set;
import java.io.*;
import java.util.*;
public class BOJ14425 {
static int N, M;
static Set<String> set = new HashSet<String>();
public static void main(String[] args) throws IOException {
try (BufferedReader br = new BufferedReader(new InputStreamReader(System.in))) {
String[] split = br.readLine().split(" ");
N = Integer.parseInt(split[0]);
M = Integer.parseInt(split[1]);
for (int i = 0; i < N; i++)
set.add(br.readLine());
int ans = 0;
for (int i = 0; i < M; i++)
if (set.contains(br.readLine()))
ans++;
System.out.println(ans);
}
}
}
'Computer Sciences > Problem Solve' 카테고리의 다른 글
[Baekjoon] 1620번: 나는야 포켓몬 마스터 이다솜 (0) | 2023.03.07 |
---|---|
[Baekjoon] 16236번: 아기 상어 - Java (0) | 2023.03.06 |
[Baekjoon] 16953번: A -> B - Java (0) | 2023.03.03 |
[Baekjoon] 1388번: 바닥 장식 - Java (0) | 2023.03.02 |
[Baekjoon] 10815번: 숫자 카드 - Java (0) | 2023.03.01 |