본문 바로가기
코딩테스트/BOJ

[JAVA] 백준 1920번 - 수 찾기

by 의정부핵꿀밤 2022. 2. 13.
728x90

원래 이분탐색 프로그래머스 "입국심사" 문제 풀려고 했는데 너무 멍... 해서 일단 다른 이분탐색 문제 풀러 간만에 백준왔당

이 문제는 완전 제대로 된 이분탐색인데 입국심사는 왜 이분탐색이지..?

일단 이 문제 부터...


 

 

풀이)

풀이는 간단하다

그냥 변수들이랑 함수 입력 받고 이분탐색 해주면 된다

이분 탐색은 배열을 정렬해서 가운데부터 찾아가면서 만약 찾으려는 수가 가운데 수보다 크면 가운데 기준 뒤에서 찾고, 가운데 수보다 작으면 가운데 기준 앞에서 찾으면 된다

이는 배열을 찾는 인덱스를 기준으로 옮기면 된다

 

바아로 코드

 

import java.util.*;


public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int []a = new int[n];
        for(int i=0;i<n;i++) {
            a[i] = sc.nextInt();
        }
        Arrays.sort(a); //이분탐색을 위한 정렬

        int m = sc.nextInt();
        int numArr[] = new int[m];
        for(int i=0;i<m;i++) {
            numArr[i]= sc.nextInt();
        }

        for(int num : numArr) {
            binarySearch(a, num);
        }
    }

    public static void binarySearch(int[] a, int num) {
        int lo = 0;
        int hi = a.length-1;
        int mid = 0;

        while(lo<=hi) {
            mid = (lo+hi)/2;
            if(a[mid]==num) {
                System.out.println(1);
                return;
            } else if(a[mid]>num) {
                hi = mid-1;
            } else if(a[mid]<num) {
                lo = mid+1;
            }
        }
        System.out.println(0);
        return;
    }
}

 

다들 lo, hi 로 쓰는 거 같아서 한번 따라해봄 풉킥

아 얼른 공부 더하러 가야겠다..!

 

 

 

 

결과

백준에서 자바는 처음 제출해봐서 어리버리 하다가 제출함

클래스 이름이 Main 이어야 하더라고...ㅋㅋ

아무튼 난 백준 골드 껍데기니까 알맹이 찾으러 자주 와야겠당ㅎㅎ

빠잉!

728x90

'코딩테스트 > BOJ' 카테고리의 다른 글

[JAVA] 백준 2667번 - 단지번호붙이기  (0) 2022.02.16
[JAVA] 백준 1260번 - DFS와 BFS  (0) 2022.02.15
4153번 - 직각삼각형  (0) 2021.12.19
1316번 그룹 단어 체커  (0) 2021.12.18
1065번 한수  (0) 2021.12.17

댓글