🥹

아좌잣 홧팅이닷!

토독토독..💻

알고리즘🤮/백준

[JAVA] 백준 1920번: 수 찾기

SU_VIN 2022. 12. 7. 22:26
반응형

 

1920번: 수 찾기

첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들

www.acmicpc.net

문제

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안에 존재하는지 알아내면 된다. 모든 정수의 범위는 -231 보다 크거나 같고 231보다 작다.

출력

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


 

 

[JAVA] 백준 10815번: 숫자 카드

10815번: 숫자 카드 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보

su-vin25.tistory.com

앞서 풀었던 숫자 카드 문제와 거의 동일하다! 이문제 또한 이분 탐색을 사용한다

음.. 달라진건 출력방식? 뭐 암튼 바로 레츄코 풀어보자


문제풀이

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;

public class BJ_CT_11 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int n =Integer.parseInt(br.readLine());
        int[] narr= new int[n];
        StringTokenizer st = new StringTokenizer(br.readLine());
        for(int i=0;i<n;i++){
            narr[i]=Integer.parseInt(st.nextToken());
        }
        Arrays.sort(narr);

        int m = Integer.parseInt(br.readLine());
        st = new StringTokenizer(br.readLine());
        int[] result = new int[m];
        for(int i=0;i<m;i++){
            int left = 0;
            int right = n-1;
            int num = Integer.parseInt(st.nextToken());

            while (left<=right){
                int midIndex =(left+right)/2;
                int middle = narr[midIndex];

                if(num==middle){
                    result[i]=1;
                    break;
                }

                if(num<middle) right= midIndex-1;
                else if(num>middle) left = midIndex+1;

                if(left>right){
                    result[i]=0;
                    break;
                }
            }
        }
        for(int i=0;i<result.length;i++){
            System.out.println(result[i]);
        }
    }
}

쏘간단! 풀이는 이전 포스트를 참고해주세욥!

비슷한 거 풀어봤다고 바로 통과!!

 

 

 

반응형