이분검색

brightvvater·2023년 3월 14일

내 풀이>

import java.util.*;
public class Main {
    public int solution(int n, int m, int[] arr) {
        int answer = 0;
        Arrays.sort(arr);
        for (int i = 0; i < n; i++) {
            if (arr[i] == m) {
                answer = i+1;
            }
        }
        return answer;
    }
    public static void main(String[] args) {
        Main T = new Main();
        Scanner kb = new Scanner(System.in);
        int n = kb.nextInt();
        int m = kb.nextInt();
        int[] arr = new int[n];
        for (int i = 0; i < n; i++) {
            arr[i] = kb.nextInt();
        }
        System.out.println(T.solution(n, m, arr));
        }
}

다른풀이>
이분검색: 이분검색은 정렬이 되어있어야 함
lt, rt는 양끝으로 두고 mid = (lt+rt)/2
mid를 기준으로 mid보다 내가 찾고자 하는 값이 큰지 작은지 판단하여 찾아 나가는 것

import java.util.*;
public class Main {
    public int solution(int n, int m, int[] arr) {
        int answer = 0;
        Arrays.sort(arr);
        int lt = 0, rt = n-1;
        while (lt <= rt) {
           int mid = (lt+rt)/2;
            if (arr[mid] == m) {
                answer = mid+1;
                break;
            }
            if (arr[mid] > m) rt = mid-1;
            else lt = mid+1;
        }
        return answer;
    }
    public static void main(String[] args) {
        Main T = new Main();
        Scanner kb = new Scanner(System.in);
        int n = kb.nextInt();
        int m = kb.nextInt();
        int[] arr = new int[n];
        for (int i = 0; i < n; i++) {
            arr[i] = kb.nextInt();
        }
        System.out.println(T.solution(n, m, arr));
        }
}
profile
코딩을 잘하고 싶은 입문자

0개의 댓글