[백준] 10815번 - HashSet, Contains (java)

팥빵·2025년 9월 22일

Baekjoon

목록 보기
35/49

첫번째로 입력받은 카드 숫자가 나중에 입력받은 카드 숫자를 포함하는지 안하는지를 출력하는 문제이다.

이 문제의 요점은

  • set은 요소의 순서를 보장하지 않는다.

  • 배열에 contains() 메소드는 없다.

    • 콜렉션(Collection)이 아니기 때문.
  • 단순 이중포문 반복문은 시간초과가 걸린다.

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();
    }
}

맞았습니다!!

profile
반갑습니다

0개의 댓글