백준

[백준] 문자열 집합 (JAVA)

코 밑 2025. 2. 3. 21:18
Contents

https://www.acmicpc.net/problem/14425

 

 

문자열 집합 비교 문제이다.

n개의 문자열 집합과

m개의 비교해야할 문자열들이 있다.

m개의 문자열이 n개의 문자열 집합 중 몇개와 일치하는지 출력하면 된다.

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
import java.util.HashSet;

// 백준 문자열 집합
// 정수 n와 m을 입력
// n개의 집합 s에 포함되어 있는 문자열 입력
// m개의 검사해야 할 문자열 입력
// m개의 문자열 중 s의 문자열과 몇개가 일치하는지 반환
// 일치하는 문자열의 검색 활용도를 높이기 위해 map이나 set 사용
// map은 시간 초과 나옴 set 사용
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());

        // 일치하는 수
        int answer = 0;
        HashSet<String> set = new HashSet<>();

        // n개의 비교 문자열
        for (int i = 0; i < n; i++) {
            set.add(br.readLine());
        }

        // m개의 비교해야할 문자열
        // 일치값이 존재하면 answer++
        for (int i = 0; i < m; i++) {
            if (set.contains(br.readLine())) {
                answer++;
            }
        }
        System.out.println(answer);
    }
}

 

n개의 문자열 집합을 빠르고 쉽게 비교하기 위해서 set을 사용했다.

n개의 문자열을 입력하면 set에 포함되게 된다.

 

값을 찾기 위해 Set 클래스의 contains() 함수를 사용했다.

set.contains(문자열)

이렇게 사용하고 set 내에 일치하는 문자열이 있으면 true를 반환한다.

 

이후 m개의 문자열을 입력하면 같은 값이 존재하는지 확인한다.

참을 반환하면 answer를 증가하게 해주었다.

 

사이다는... 역시.. 칠성...

'백준' 카테고리의 다른 글

[백준] 날짜 계산 (JAVA)  (1) 2025.02.05
[백준] 비밀번호 찾기 (JAVA)  (2) 2025.02.05
[백준] 이친수 (JAVA)  (3) 2025.02.03
[백준] 방 번호 (JAVA)  (1) 2025.02.01
[백준] 보물 (JAVA)  (2) 2025.02.01