๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • ์žฅ์›์ต ๊ธฐ์ˆ ๋ธ”๋กœ๊ทธ
๐Ÿ’ป Computer Science/- Data Structure, Algorithm

[์•Œ๊ณ ๋ฆฌ์ฆ˜-PS] Java์—์„œ ์„ ํ˜• ๊ฒ€์ƒ‰ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•.

by Wonit 2020. 2. 12.
๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์ค‘ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ด๋ฉฐ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ฒ˜์Œ ํ•™์Šตํ•œ๋‹ค๋ฉด ํ•„์ˆ˜๋กœ ์•Œ์•„์•ผ ํ•œ๋‹ค.

์„ ํ˜• ๊ฒ€์ƒ‰

์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ •์˜

์„ ํ˜• ๊ฒ€์ƒ‰์ด๋ž€ ์š”์†Œ๊ฐ€ ์ง์„  ๋ชจ์–‘์œผ๋กœ ๋Š˜์–ด์„  ๋ฐฐ์—ด์—์„œ ์›ํ•˜๋Š” ๊ฐ’์„ ์ฐพ๊ธฐ ์œ„ํ•ด 0๋ฒˆ์งธ index์—์„œ ๋ถ€ํ„ฐ ๋ฐฐ์—ด์˜ ๋๊นŒ์ง€ ์ˆœ์ฐจ์ ์œผ๋กœ index๋ฅผ ๋น„๊ตํ•˜์—ฌ ๊ฐ’์„ ์ฐพ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.

์ข…๋ฃŒ ์กฐ๊ฑด

  • ์กฐ๊ฑด 1 : ๊ฒ€์ƒ‰ํ•  ๊ฐ’์„ ๋ฐœ๊ฒฌํ•˜์ง€ ๋ชปํ•˜๊ณ  ๋ฐฐ์—ด์˜ ๋์„ ์ง€๋‚˜๊ฐ„ ๊ฒฝ์šฐ
  • ์กฐ๊ฑด 2 : ๊ฒ€์ƒ‰ํ•  ๊ฐ’๊ณผ ๊ฐ™์€ ์š”์†Œ๋ฅผ ๋ฐœ๊ฒฌํ•œ ๊ฒฝ์šฐ

์‹œ๊ฐ„ ๋ณต์žก๋„

์ž…๋ ฅ ๋ฐฐ์—ด์˜ ๊ธธ์ด๊ฐ€ n ์ธ ๊ฒฝ์šฐ n/2

์†Œ์Šค ์ฝ”๋“œ

์‹คํ–‰ ๊ฒฐ๊ณผ

์„ ํ˜• ๊ฒ€์ƒ‰์˜ ๋ณด์ดˆ๋ฒ•

์„ ํ˜• ๊ฒ€์ƒ‰์€ ๋ฐ˜๋ณตํ•  ๋•Œ ๋งˆ๋‹ค ์ข…๋ฃŒ ์กฐ๊ฑด์„ ๋ชจ๋‘ ๊ฒ€์‚ฌํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์ด ๋น„์šฉ์„ ์ ˆ๋ฐ˜์œผ๋กœ ์ค„์ผ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ๋ฐ”๋กœ ์„ ํ˜•๊ฒ€์ƒ‰์˜ ๋ณด์ดˆ๋ฒ•์ด๋ผ๊ณ  ํ•œ๋‹ค.

 

๋ณด์ดˆ๋ฒ•์€ arr[0] ~ arr[5] ๊นŒ์ง€ ์žˆ๋Š” ๋ฐฐ์—ด์„ ๋ฐ›์•„๋“ค์ด๋ฉด ์ž„์˜์ ์œผ๋กœ ๋ฐฐ์—ด์˜ ์นธ ์ˆ˜๋ฅผ 1์นธ ๋Š˜๋ ค ์ œ์ผ ๋งˆ์ง€๋ง‰ ์ธ๋ฑ์Šค์— ๊ฒ€์ƒ‰์„ ์›ํ•˜๋Š” key ๊ฐ’์„ ์‚ฝ์ž…ํ•˜์—ฌ ์ข…๋ฃŒ ์กฐ๊ฑด ์ค‘ ์ข…๋ฃŒ ์กฐ๊ฑด 1 : ๊ฒ€์ƒ‰ํ•  ๊ฐ’์„ ๋ฐœ๊ฒฌํ•˜์ง€ ๋ชปํ•˜๊ณ  ๋ฐฐ์—ด์˜ ๋์„ ์ง€๋‚˜๊ฐ„ ๊ฒฝ์šฐ ์˜ ์กฐ๊ฑด ๊ฒ€์‚ฌ ๋น„์šฉ์„ ์ค„์ด๋Š” ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•œ๋‹ค.

 

 

์ข…๋ฃŒ ์กฐ๊ฑด์„ ๋‹ค์‹œ ๋ณด์ž.

์„ ํ˜• ๊ฒ€์ƒ‰์˜ ์ข…๋ฃŒ ์กฐ๊ฑด

  • ์กฐ๊ฑด 1 : ๊ฒ€์ƒ‰ํ•  ๊ฐ’์„ ๋ฐœ๊ฒฌํ•˜์ง€ ๋ชปํ•˜๊ณ  ๋ฐฐ์—ด์˜ ๋์„ ์ง€๋‚˜๊ฐ„ ๊ฒฝ์šฐ
  • ์กฐ๊ฑด 2 : ๊ฒ€์ƒ‰ํ•  ๊ฐ’๊ณผ ๊ฐ™์€ ์š”์†Œ๋ฅผ ๋ฐœ๊ฒฌํ•œ ๊ฒฝ์šฐ

์—ฌ๊ธฐ์„œ ์กฐ๊ฑด 1์„ ์—†์• ๊ณ  ์กฐ๊ฑด 2๋กœ๋งŒ ์ข…๋ฃŒ๋ฅผ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค.

์„ ํ˜• ๊ฒ€์ƒ‰ ๋ณด์ดˆ๋ฒ•์˜ ์ข…๋ฃŒ ์กฐ๊ฑด

  • ์กฐ๊ฑด 1 : ๊ฒ€์ƒ‰ํ•  ๊ฐ’๊ณผ ๊ฐ™์€ ์š”์†Œ๋ฅผ ๋ฐœ๊ฒฌํ•œ ๊ฒฝ์šฐ

์†Œ์Šค ์ฝ”๋“œ

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        int num = input.nextInt(); // ์š”์†Ÿ ์ˆ˜
        int[] x = new int[num+1];

        for (int i = 0; i < num; i++) {
            x[i] = input.nextInt();
        }

        int key = input.nextInt();

        int ans = Sentry.sentry(x, num, key);
        if(ans == -1) System.out.println("์š”์†Œ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.");
        else System.out.println(key+"๋Š”" + "arr[" + ans +"] ์— ์žˆ์Šต๋‹ˆ๋‹ค.");
    }
}

class Sentry {
    static int sentry(int[] arr, int num, int key){
        int i = 0;
        arr[num] = key;

        while(true) {
            if(arr[i] == key) break;
            i++;
        }

        return i == num ? -1 : i;
    }
}

๋Œ“๊ธ€