알고리즘/백준

2776번 : 암기왕

코딍코딍 2022. 8. 21. 11:54

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

 

2776번: 암기왕

연종이는 엄청난 기억력을 가지고 있다. 그래서 하루 동안 본 정수들을 모두 기억 할 수 있다. 하지만 이를 믿을 수 없는 동규는 그의 기억력을 시험해 보기로 한다. 동규는 연종을 따라 다니며,

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));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        HashSet<Integer> set = new HashSet<>();
        int t = Integer.parseInt(br.readLine());

        for(int i=0;i<t;i++) {
            int n = Integer.parseInt(br.readLine());
            StringTokenizer st = new StringTokenizer(br.readLine(), " ");
            for(int j=0;j<n;j++) {
                set.add(Integer.parseInt(st.nextToken()));
            }

            int m = Integer.parseInt(br.readLine());
            st = new StringTokenizer(br.readLine(), " ");
            for(int j=0;j<m;j++) {
                int k = Integer.parseInt(st.nextToken());
                if(!set.add(k)) bw.write(1 + "\n");
                else {
                    set.remove(k);
                    bw.write(0 + "\n");
                }
            }
            set.clear();
        }

        bw.flush();
    }
}

 

 

해결방법

중복된 값이 있으면 1을 출력하고 없으면 0을 출력하면 되는 문제라 HashSet을 사용하여 해결하였다. 하지만 두 번째 시도만에 맞았다. 그 이유는 하나의 테스트가 끝날 때마다 set을 초기화시키지 않아서였다. 더 생각하면서 풀어야겠다.