알고리즘/백준
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을 초기화시키지 않아서였다. 더 생각하면서 풀어야겠다.