๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

[์ •๋ ฌ] 8. ์ด๋ถ„๊ฒ€์ƒ‰

์‹œํ๋ฆฌํ‹ฐ์ง€ํ˜ธ 2024. 1. 20.

<<ํ’€์ด>>

 

-๋‚˜์˜ ํ’€์ด-

๋ฌธ์ œ๋Š” ์ด๋ถ„๊ฒ€์ƒ‰์ด๋ผ๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•ด์„œ ํ•˜๋Š” ๊ฒƒ ๊ฐ™์ง€๋งŒ ์ผ๋‹จ ์ด๋ถ„ ๊ฒ€์ƒ‰์„ ์ž˜ ๋ชจ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ํ’€์–ด๋ดค๋‹ค.

Arrays.sort๋ฅผ ํ†ตํ•ด์„œ ์ •๋ ฌ ํ•œ ๋’ค์— for๋ฌธ์„ ๋Œ๋ ค ๊ฐ™์€ ๊ฐ’์ด ๋‚˜์˜ค๋ฉด ๊ทธ ์ธ๋ฑ์Šค ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•ด์„œ ๊ตฌํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

import java.util.Arrays;
import java.util.Scanner;

class Main {
    private int solution(int n, int m, int[] arr) {
        Arrays.sort(arr);
        for(int i = 0; i < n; i++) {
            if(arr[i] == m) return i + 1;
        }
        return -1;
    }


    public static void main(String[] args) {
        Main T = new Main();
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int m = in.nextInt();
        int[] arr  = new int[n];
        for(int i = 0; i < n; i++) {
            arr[i] = in.nextInt();
        }

        System.out.println(T.solution(n, m , arr));
    }
}

 

์—ฌ๊ธฐ์„œ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ์ƒ๊ฐํ•œ๋‹ค๋ฉด break๋ฅผ ํ™œ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

 

import java.util.Arrays;
import java.util.Scanner;

class Main {
    private int solution(int n, int m, int[] arr) {
        Arrays.sort(arr);
        int answer = 0;
        for(int i = 0; i < n; i++) {
            if(arr[i] == m) {
                 answer = i + 1;
                 break;
            }
        }
        return answer;
    }


    public static void main(String[] args) {
        Main T = new Main();
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int m = in.nextInt();
        int[] arr  = new int[n];
        for(int i = 0; i < n; i++) {
            arr[i] = in.nextInt();
        }

        System.out.println(T.solution(n, m , arr));
    }
}

 

 

-๊ฐ•์‚ฌ๋‹˜ ํ’€์ด-

 

๊ฐ•์‚ฌ๋‹˜์€ ์ด๋ถ„ ๊ฒ€์ƒ‰์„ ํ™œ์šฉํ•ด์„œ ๋ฌธ์ œ๋ฅผ ํ’€์—ˆ๋‹ค. ์ด๋ถ„ ๊ฒ€์ƒ‰์ด๋ž€ ๋จผ์ € ์ •๋ ฌ์„ ํ•œ ๋’ค์—, ๊ฐ€์žฅ ์•ž์ชฝ ๊ฐ’์„ lt๋กœ ๋งˆ์ง€๋ง‰ ๊ฐ’์„ rt๋กœ ์ง€์ •ํ•œ ๋’ค์— 

 

mid = lt + rt / 2 ๋ฅผ ํ•˜๊ณ  ๊ทธ ์ธ๋ฑ์Šค์— ์œ„์น˜ํ•œ ๊ฐ’์ด ์šฐ๋ฆฌ๊ฐ€ ์ฐพ๋Š” ๊ฒƒ์ด๋ฉด ๊ทธ๋Œ€๋กœ ๊ทธ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๊ณ  return์„ ํ•œ๋‹ค. ํ•˜์ง€๋งŒ ๊ทธ๊ฒŒ ์•„๋‹ˆ๊ณ  ๊ตฌํ•˜๋ ค๋Š” ๊ฐ’์ด 

 

ํ˜„์žฌ ์œ„์น˜์˜ ๊ฐ’๋ณด๋‹ค ๋” ํฐ ๊ฐ’์ด๋ฉด ๊ทธ ๋ฐ‘์— ์žˆ๋Š” ์ชฝ์€ ๋ฌด์‹œํ•˜๊ณ  ์œ„์ชฝ์„ ๊ฒ€์ƒ‰ํ•œ๋‹ค. ์ฆ‰, lt ๊ฐ’์„ mid + 1๋กœ ๋ฐ”๊ฟ”์ค€๋‹ค.

 

๋ฐ˜๋Œ€์ด๋ฉด ์œ„์ชฝ์„ ๋ฌด์‹œํ•˜๊ณ  ์•„๋ž˜์ชฝ์„ ๊ฒ€์ƒ‰ํ•œ๋‹ค. ์ฆ‰, rt๊ฐ’์„ mid - 1 ํ•ด์ค€๋‹ค.

 

๊ทธ ๊ณผ์ •์„ lt <= rt ์ผ ๋•Œ ๊นŒ์ง€ ํ•ด์ค€๋‹ค. 

 

import java.util.Arrays;
import java.util.Scanner;

class Main {
    private 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 in = new Scanner(System.in);
        int n = in.nextInt();
        int m = in.nextInt();
        int[] arr  = new int[n];
        for(int i = 0; i < n; i++) {
            arr[i] = in.nextInt();
        }

        System.out.println(T.solution(n, m , arr));
    }
}

 

์ด๋ถ„ ๊ฒ€์ƒ‰ ๋ฐฉ์‹์œผ๋กœ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ์กฐ๊ธˆ ๋” ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.!!

 

์˜ค๋Š˜๋„ ์ข‹์€ ๊ฐœ๋…์„ ๋ฐฐ์šฐ๊ณ  ๊ฐ‘๋‹ˆ๋‹ค~!

๋Œ“๊ธ€