새발블로그

[백준/Java] 1920 수 찾기 본문

Problem Solving/Baekjoon

[백준/Java] 1920 수 찾기

EUG 2025. 7. 1. 13:59

문제

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

풀이방법

처음에 arrayList.contains로 했다가 시간 초과 남
ArrayList의 contains는 리스트의 처음부터 끝까지 순회하며 O(N)을 가짐
따라서 M 개의 수만큼 반복 * 내부 반복해서 O(N*M)
HashSet의 contains는 평균적으로 O(1)
따라서 M개의 수만큼 반복 * 내부 반복 O(N)

풀이

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));
        int N = Integer.parseInt(br.readLine());

        StringTokenizer aStr = new StringTokenizer(br.readLine());
        Set<Integer> set = new HashSet<>();
        // A 배열
        for (int i = 0 ; i<N; i++) {
            set.add(Integer.parseInt(aStr.nextToken()));
        }
        int M = Integer.parseInt(br.readLine());
        StringTokenizer bStr = new StringTokenizer(br.readLine());
        for (int i = 0; i<M; i++) {
            if (set.contains(Integer.parseInt(bStr.nextToken()))){
                System.out.println(1);
            }
            else {
                System.out.println(0);
            }
        }
    }
}

 

 

'Problem Solving > Baekjoon' 카테고리의 다른 글

[백준/Java] 1436 영화감독 숌  (0) 2025.07.01
[백준/Java] 11652 카드  (0) 2025.07.01
[백준/Java] 11279 최대 힙  (0) 2025.07.01
[백준/Java] 18258 큐 2  (0) 2025.04.02
[백준/Java] 14425 문자열 집합  (0) 2025.03.30