[์ธํ๋ฐ_์ฝ์ ์ ๋ ฌ] 3. ์ฝ์ ์ ๋ ฌ
<<ํ์ด>>
-๊ฐ์ฌ๋ ํ์ด-
๊ฐ์ฌ๋๊ป์ ์ฝ์ ์ ๋ ฌ๋ก ๋ฌธ์ ๋ฅผ ํธ์ จ๋ค. ์ฝ์ ์ ๋ ฌ์ด๋ 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๊ฐ๋ฅผ ๋ฐฐ์ ๋๋ฐ, ์ ๊ธฐ์ตํ์!!