순간을 성실히, 화려함보단 꾸준함을

[ boj : 22233 ] 가희와 키워드 본문

알고리즘,SQL/백준,BOJ

[ boj : 22233 ] 가희와 키워드

폭발토끼 2022. 1. 9. 13:52

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

 

22233번: 가희와 키워드

1번째 글을 쓰고 난 후에, 메모장에 있는 키워드는 set, floyd, os가 됩니다. 2번째 글을 쓰고 난 후에, 메모장에 있는 키워드는 set, os가 됩니다. map은 1번째 글과 2번째 글에 중복으로 등장하였음을

www.acmicpc.net

해설 : 메모장에 적혀있는 단어가 나왔는지 안나왔는지 확인만 할 수 있으면 됩니다.

중복 처리를 해주기 위해 Set 자료구조를 선언해서 해결해 주면 되겠죠?

전 Set 2개를 선언해 주었는데 가만 생각해보니 그냥 Set 하나 선언해서 remove 해주면 될 것 같습니다.

//package com.example.bojtemplate;

/*JAVA IO Template Reference : 류호석*/

import javax.xml.crypto.dsig.XMLSignature;
import java.io.*;
import java.lang.reflect.Array;
import java.lang.reflect.ParameterizedType;
import java.nio.charset.StandardCharsets;
import java.util.*;

import static java.lang.Math.*;

public class Main {
    private static FastIO scan = new FastIO();
    //정답은 sb에 append 를 사용하여 출력
    //만약 개행까지 출력하고 싶으면 append('\n')을 추가
    static StringBuilder sb = new StringBuilder();

    public static void main(String[] args) {
        //int t;
        //t = scan.nextInt();
        //while(t-->0){
            solve();
        //}
    }
    public static void solve() {
        int n,m;
        Set<String> s1 = new HashSet<>();
        Set<String> s2 = new HashSet<>();

        n = scan.nextInt();
        m = scan.nextInt();

        String input;
        for(int i=0;i<n;i++){
            input = scan.next();
            s1.add(input);
        }
        for(int i=0;i<m;i++){
            input = scan.nextLine();
            String[] str = input.split(",");
            for(int j=0;j<str.length;j++){
                if(s1.contains(str[j]))
                    s2.add(str[j]);
            }
            System.out.println(s1.size()-s2.size());
        }
    }
}
class Pair{
    int x,y;
    public Pair(int x,int y){
        this.x=x;
        this.y=y;
    }
}
class FastIO{
    BufferedReader br;
    StringTokenizer st;

    public FastIO(){
        br = new BufferedReader(new InputStreamReader(System.in));
    }
    int nextInt(){
        return Integer.parseInt(next());
    }
    double nextDouble(){
        return Double.parseDouble(next());
    }
    Long nextLong(){
        return Long.parseLong(next());
    }
    String nextLine(){
        String str="";
        try{
            str = br.readLine();
        }catch (IOException e){
            e.printStackTrace();
        }
        return str;
    }
    String next() {
        while (st == null || !st.hasMoreElements()) {
            try {
                st = new StringTokenizer(br.readLine());
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return st.nextToken();
    }
}