백준

백준 2776 암기왕(Java)

Park DJ 2023. 1. 30. 02:11

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

 

2776번: 암기왕

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

www.acmicpc.net


 

해석 및 팁

 


 

이 문제를 풀 때 ArrayList나 배열을 사용하면 시간초과가 발생하므로 HashSet을 사용해주어야 합니다. 먼저 처음 주어진 수를 set에 저장한 후 그다음 주어지는 수가 존재하는지 확인하여 존재하면 StringBuilder에 1을 더하고 존재하지 않으면 0을 더하면 됩니다.

 


 

Java 코드

 


import java.util.Scanner;
import java.util.HashSet;

public class Main {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    StringBuilder sb = new StringBuilder();

    int t = sc.nextInt();
  
    for(int i = 0; i < t; i++) {
      
      HashSet<Integer> set = new HashSet<>();
      
      int n = sc.nextInt();
      
      for(int j = 0; j < n; j++) {
        set.add(sc.nextInt());
      }
      
      int m = sc.nextInt();
      
      for(int j = 0; j < m; j++) {
        int num = sc.nextInt();
        if(set.contains(num)) sb.append(1+"\n");
        else sb.append(0+"\n");
      }
      
    }

    System.out.println(sb);
  }
}