
첫번째로 입력받은 카드 숫자가 나중에 입력받은 카드 숫자를 포함하는지 안하는지를 출력하는 문제이다.
이 문제의 요점은
set은 요소의 순서를 보장하지 않는다.
배열에 contains() 메소드는 없다.
단순 이중포문 반복문은 시간초과가 걸린다.
3가지를 알면 쉽게 풀 수 있다.
위 정보를 바탕으로 설계한 코드는 다음과 같다.
import java.util.*;
import java.io.*;
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));
StringTokenizer st;
int N = Integer.parseInt(br.readLine());
Set<Integer> set = new HashSet<>();
st = new StringTokenizer(br.readLine(), " ");
for(int i=0; i<N; i++){
int tmp = Integer.parseInt(st.nextToken());
set.add(tmp);
}
int M = Integer.parseInt(br.readLine());
int[] arr = new int[M];
st = new StringTokenizer(br.readLine(), " ");
for(int i=0; i<M; i++){
int tmp = Integer.parseInt(st.nextToken());
arr[i] = tmp;
}
for(int num : arr){
if(set.contains(num)){
bw.write("1 ");
}else{
bw.write("0 ");
}
}
br.close();
bw.flush();
bw.close();
}
}
맞았습니다!!