본문 바로가기
문제 풀이/백준

[JAVA51] 1920. 수 찾기

by hyeminigo 2024. 10. 10.

1920. 수 찾기 (S4)

시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율
1 초 128 MB 287633 91005 60108 30.364 %

문제

N개의 정수 A[1], A[2], …, A[N]이 주어져 있을 때, 이 안에 X라는 정수가 존재하는지 알아내는 프로그램을 작성하시오.

입력

첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들이 A안에 존재하는지 알아내면 된다. 모든 정수의 범위는 -2^31 보다 크거나 같고 2^31보다 작다.

출력

M개의 줄에 답을 출력한다. 존재하면 1을, 존재하지 않으면 0을 출력한다.

.


summary

수가 포함되어 있는지 확인

  • 포함되면 1
  • 포함되지 않으면 0 출력

 

strategy

자료구조(Set) 활용

  • 10만을 이중 for 문 하면 시간초과 난다 (브루트 포스 X)
  • HashSet 은 O(1) 로 찾을 수 있음
  • 첫번째 배열은 Set 에 담음
  • 두번째 배열값은 입력받을 때마다 Set 에서 찾기

 

note

  • 1 ≤ N ≤ 100,000
  • 1 ≤ M ≤ 100,000
  • 정수의 범위는 -2^31 보다 크거나 같고 2^31보다 작다. 
import java.util.*;
import java.io.*;

public class Main {

    static int N, M;
    static Set<Integer> numbers = new HashSet<>();
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder answer = new StringBuilder();
        
        N = Integer.parseInt(br.readLine());

        StringTokenizer input = new StringTokenizer(br.readLine());
        for(int n = 0; n < N; n++) {
            int num = Integer.parseInt(input.nextToken());
            numbers.add(num);
        }

        M = Integer.parseInt(br.readLine());
        input = new StringTokenizer(br.readLine());
        for(int m = 0; m < M; m++) {
            int num = Integer.parseInt(input.nextToken());
            if(numbers.contains(num)) answer.append(1);
            else answer.append(0);
            
            answer.append("\n");
        }

        System.out.println(answer);
        br.close();
    }
}

 

문제 결과 메모리 시간 언어코드 길이
1253 맞았습니다!! 50104 KB 580 ms  Java 11 / 수정 994 B

 

memo

  • 투포인터도 생각했지만 두번째 배열은 정렬하면 안되서 탈락
  • 이분탐색도 가능

'문제 풀이 > 백준' 카테고리의 다른 글

[JAVA53] 28278. 스택2  (0) 2024.10.13
[JAVA52] 9663. N-Queen  (1) 2024.10.12
[JAVA50] 1253. 좋다  (0) 2024.10.09
[JAVA49] 1541. 잃어버린 괄호  (0) 2024.10.08
[JAVA46] 3079. 입국심사  (1) 2024.10.07