์ฝ”๋”ฉํ…Œ์ŠคํŠธ

[์ธํ”„๋Ÿฐ_์‚ฝ์ž… ์ •๋ ฌ] 3. ์‚ฝ์ž… ์ •๋ ฌ

์‹œํ๋ฆฌํ‹ฐ์ง€ํ˜ธ 2024. 1. 16. 22:33

<<ํ’€์ด>>

 

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

 

๊ฐ•์‚ฌ๋‹˜๊ป˜์„œ ์‚ฝ์ž… ์ •๋ ฌ๋กœ ๋ฌธ์ œ๋ฅผ ํ‘ธ์…จ๋‹ค. ์‚ฝ์ž… ์ •๋ ฌ์ด๋ž€ i = 1 ๋ถ€ํ„ฐ ํ•ด์„œ ์™ผ์ชฝ๊ณผ ๋น„๊ตํ•˜์—ฌ, ์กฐ๊ฑด ์ถฉ์กฑ์‹œ ์ž๋ฆฌ ๋ณ€ํ™˜์„ ํ•œ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ํ•ด์„œ ์˜ค๋ฆ„์ฐจ์ˆœ ํ˜น์€ ๋‚ด๋ฆผ์ฐจ์ˆœ์„ ํ•˜๋Š” ํ˜•ํƒœ์ด๋‹ค.

 

์ด ๋ฌธ์ œ๋Š” ์˜ค๋ฆ„์ฐจ์ˆœ์„ ๊ตฌํ•˜๋Š” ๊ฒƒ์ด๊ธฐ์— ์™ผ์ชฝ ๋ถ€ํ„ฐ ์ •๋ ฌ์ด ๋˜์–ด๊ฐ„๋‹ค.

๊ฐ’์„ ๋ฐ”๊พธ๊ธฐ ์œ„ํ•ด ์ž„์‹œ๋ณด๊ด€ ์žฅ์†Œ๋กœ tmp๋ฅผ ํ™œ์šฉํ–ˆ๊ณ , 

j๊ฐ’์„ for๋ฌธ ๋ธ”๋ก์—์„œ scope๋ฅผ ๋„“ํžˆ๊ธฐ ์œ„ํ•ด ๋ฐ–์œผ๋กœ ๋นผ์คฌ๋‹ค.

๋˜ํ•œ, for๋ฌธ์„ ๋‹ค ๋Œ๋ฉด ๋๋‚ฌ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š”๋ฐ ์ž˜ ์ƒ๊ฐํ•ด๋ณด๋ฉด ๋งˆ์ง€๋ง‰ ๊นŒ์ง€ for๋ฌธ () ๋‚ด์˜ ๋ณ€์ˆ˜๋Š” ๋ณ€ํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด,

j>=0 j--  ์ด๋ฉด ๋งˆ์ง€๋ง‰์—๋Š” j๊ฐ€ -1 ์ด ๋œ๋‹ค.

 

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์‹ค์ œ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ j๋ฅผ ํ™œ์šฉํ•ด์„œ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ด๋ฅผ ๊ณ ๋ คํ•ด์„œ ๋„ฃ์–ด์ค˜์•ผ ํ•œ๋‹ค๋Š” ์ ์ด๋‹ค !!

 

import java.util.*;

class Main {
    private int[] solution(int n, int[] arr) {
        for(int i = 1; i < n; i++) {
            int tmp = arr[i], j;
            for(j = i - 1; j >= 0; j--){
                if(arr[j] > tmp) arr[j + 1] = arr[j];
                else break;
            }
            arr[j + 1] = tmp;
        }
        return arr;
    }
    public static void main(String[] args) {
        Main T = new Main();
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int[] arr = new int[n];
        for(int i = 0; i < n; i++) {
            arr[i] = in.nextInt();
        }

        for(int x : T.solution(n, arr)) {
            System.out.print(x + " ");
        }
    }
}

 

์ด ์„ ํƒ์ •๋ ฌ, ๋ฒ„๋ธ”์ •๋ ฌ, ์‚ฝ์ž… ์ •๋ ฌ 3๊ฐœ๋ฅผ ๋ฐฐ์› ๋Š”๋ฐ, ์ž˜ ๊ธฐ์–ตํ•˜์ž!!