문제 풀이/백준

[백준]22233번. 제출(JAVA)

27200 2024. 4. 3. 23:11

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


풀이

import java.io.*;
import java.util.*;


public class Main {
    static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));


    public static void main(String[] args) throws IOException {
        int n, m;
        StringTokenizer st = new StringTokenizer(br.readLine());
        n = Integer.parseInt(st.nextToken());
        m = Integer.parseInt(st.nextToken());
        Map<String, Boolean> map = new HashMap<>();
        for (int i = 0; i < n; i++) {
            map.put(br.readLine(), true);
        }
        int cnt = n;
        for (int i = 0; i < m; i++) {
            st = new StringTokenizer(br.readLine(), ",");

            while (st.hasMoreTokens()) {
                String s = st.nextToken();
                if (map.containsKey(s)) {
                    map.remove(s);
                    cnt--;
                }
            }
            bw.write(cnt + "\n");
        }
        bw.flush();
    }
}

 

전체 문자의 개수를 가져가면서 단어가 등장했을 때만 삭제해주며 진행한다