본문 바로가기

알고리즘

[BOJ] 22233번 : 가희와 키워드 (JAVA)

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

 

22233번: 가희와 키워드

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

www.acmicpc.net

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

public class Main {

    public static void main(String[] args) throws IOException{

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st;

        st = new StringTokenizer(br.readLine());
        int N = Integer.parseInt(st.nextToken());
        int M = Integer.parseInt(st.nextToken());

        HashSet<String> set = new HashSet<>();
        for(int i=0;i<N;i++){
            String tmp = br.readLine();
            set.add(tmp);
        }

        for(int i=0;i<M;i++){
            String tmp = br.readLine();
            String[] tmpList = tmp.split(",");
            for(String x :tmpList){
                if(set.contains(x)){
                    set.remove(x);
                }
            }
            System.out.println(set.size());
        }

    }
}

HashSet을 이용해서 해당 키워드가 있으면 삭제하고 한 줄이 끝나면 set 크기를 출력하도록 했다.

set의 contains 메서드를 사용했다.

cnt 변수를 N으로 초기화 한 뒤 키워드 삭제할 때마다 cnt--해주는 방법이랑 시간차이가 나는지 궁금했는데 set 크기를 출력하는 방법이 미세하게 빠르긴했지만 큰 차이는 없는 것 같다 (아마도?)