S E P H ' S

[Java] BJ.10815 숫자 카드 본문

Algorithm/BackJoon

[Java] BJ.10815 숫자 카드

yoseph0310 2022. 6. 14. 15:02
 

10815번: 숫자 카드

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

www.acmicpc.net

풀이

이분 탐색 문제이다. 상근이가 갖고 있는 카드의 수들을 담은 배열에 주어진 M개의 정수들로 이분 탐색을 진행하고 있으면 1, 없으면 2를 StringBuilder 에 append하여 출력했다.

 


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

public class BJ_10815 {

    static int [] card;
    static int [] arr;

    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        StringTokenizer st;

        int N = Integer.parseInt(br.readLine());
        card = new int[N];
        st = new StringTokenizer(br.readLine());
        for (int i = 0; i < N; i++) {
            card[i] = Integer.parseInt(st.nextToken());
        }

        int M = Integer.parseInt(br.readLine());
        arr = new int[M];
        st = new StringTokenizer(br.readLine());
        for (int i = 0; i < M; i++) {
            arr[i] = Integer.parseInt(st.nextToken());
        }

        Arrays.sort(card);

        int start = 0;
        int end = card.length - 1;
        for (int i = 0; i < M; i++) {
            sb.append(search(arr[i], card, start, end)).append(' ');
        }

        System.out.println(sb);
    }

    static int search(int n, int [] card, int start, int end){
        int mid = (start + end) / 2;
        if (start > end){
            return 0;
        }
        if (n == card[mid]){
            return 1;
        }
        else if (n > card[mid]){
            return search(n, card, mid + 1, end);
        }
        else {
            return search(n, card, start, mid - 1);
        }
    }
}

 

'Algorithm > BackJoon' 카테고리의 다른 글

[Java] BJ.10816 숫자 카드2  (0) 2022.07.03
[Python] BJ.10815 숫자카드  (0) 2022.06.14
[Python] BJ.10989 수 정렬하기 3  (0) 2022.06.13
[Java] BJ.10989 수 정렬 3  (0) 2022.06.13
[Python] BJ.2609 최대공약수와 최소공배수  (0) 2021.12.27