본문 바로가기
BOJ

[BOJ] [JAVA] 10815번 숫자 카드

by Parsler 2024. 1. 6.
 

10815번: 숫자 카드

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

www.acmicpc.net

이진 탐색을 이용한 문제였다. 

이진 탐색을 말로만 들었지 써본 건 처음이라 살짝 헷갈렸따!

신기해서 올려봤다.

import java.util.*;
import java.io.*;
public class Main {
    static int [] card;
	public static void main(String [] args) throws IOException {
    	BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());
        card = new int[n];
        StringTokenizer st1 = new StringTokenizer(br.readLine());
        for (int i = 0; i < n; i++) {
        	card[i] = Integer.parseInt(st1.nextToken());
        }
        Arrays.sort(card);
        int m = Integer.parseInt(br.readLine());
        StringTokenizer st = new StringTokenizer(br.readLine());
        for (int i = 0; i < m; i++) {
            int p = Integer.parseInt(st.nextToken());
            int start = 0;
            int fin = n - 1;
            int mid;
            int ans = 0;
            while (start <= fin) {
            	mid = (start + fin) / 2;
                if (card[mid] == p) {
                	ans = 1;
                    break;
                }
                if (card[mid] > p) {
                    fin = mid - 1;
                } else {
                    start = mid + 1;
                }
            }
            System.out.print(ans + " ");
        }
    }
}

 

앞으로 자바를 중점적으로 쓸 예정이다.

파이썬을 배우려고 파슬리라고 이름을 지었는데 자스민으로 지을 걸 그랬다. ㅋㅋㅋ

자바

스리슬쩍

민들어보기(?)