알고리즘

백준 14425 문자열 집합

킨글 2024. 9. 8. 12:14

설명

한번 읽고 어떻게 문제를 풀으라고 하는 것인지 잘 이해가 안갔다. 

입력 받은 문자를 보니 16줄이었다. 

다시 보니, N이 5이고 M이 11이었는데 N의 갯수만큼 5줄의 문자열이 주어지고, 11줄의 M의 문자열이 주어진것이었다.

그래서 Set에 5가지 N을 모두 넣은 후, 11가지 M을 순회하면서 contains로 포함되어 있으면 result 값을 1씩 늘려주었다.

 

코드

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.HashSet;
import java.util.Set;
import java.util.StringTokenizer;

public class Main {

    // 14425
    public static void main(String[] args) throws IOException {
        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());
        Set<String> set = new HashSet<>();
        for (int i = 0; i < N; i++) {
            String input = br.readLine();
            set.add(input);
        }

        int result = 0;
        for (int i = 0; i < M; i++) {
            String input = br.readLine();
            if(set.contains(input)) {
                result++;
            }
        }
        bw.write(result + "");

        bw.flush();
        bw.close();
    }
}