[Java] Set (백준 10815번)

손한주·2026년 2월 4일

java

목록 보기
1/2

백준10815번 문제
백준 10815번 숫자카드 문제를 풀이하였다.

두 숫자 조합들에 중복이 있는지 확인하는 문제.
단, 숫자가 매우 많으므로 시간복잡도를 줄여야 한다.

Set

특징)
1. 입력 순서가 보장되지 않음
2. 중복이 허용되지 않음
3. null 입력 가능함

hashset은 값 자체가 고유한 주소가 되므로 값을 찾을 때 모든 값을 순회할 필요가 없다.

순서 보장이 필요하면 LinkedHashSet을 사용한다.

코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.StringTokenizer;
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine());
        HashSet<Integer> s1 = new HashSet<>(N); //hashset 선언
        StringTokenizer st = new StringTokenizer(br.readLine(), " ");
        for(int i =0; i<N;i++){           
           s1.add(Integer.parseInt(st.nextToken())); //hashset에 값 추가
        }
        int M = Integer.parseInt(br.readLine());
        LinkedHashSet<Integer> s2 = new LinkedHashSet<>(M); //hashset 선언
        StringTokenizer st2 = new StringTokenizer(br.readLine(), " ");
        for(int i =0; i<M;i++){
         s2.add(Integer.parseInt(st2.nextToken())); //hashset에 값 추가
        }                
        StringBuilder sb = new StringBuilder();
        for(int num : s2){
            if(s1.contains(num)){
                sb.append(1).append(' ');
            } else {
                sb.append(0).append(' ');
            }
        }
        System.out.print(sb.toString());
    }
}
                                                              
                                                              
profile
호랑이!

0개의 댓글