2023. 11. 6. 09:34ใ์ธํ๋ฐ/์๋ฐ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด ์ ๋ฌธ : ์ฝ๋ฉํ ์คํธ ๋๋น
https://hyejin.tistory.com/1241
-> ์ด์ ๋ฌธ์ ํ์ด
3. ์ฝ์ ์ ๋ ฌ
์ค๋ช
N๊ฐ์ด ์ซ์๊ฐ ์ ๋ ฅ๋๋ฉด ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ์ฌ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์ธ์.
์ ๋ ฌํ๋ ๋ฐฉ๋ฒ์ ์ฝ์ ์ ๋ ฌ์ ๋๋ค.
์ ๋ ฅ
์ฒซ ๋ฒ์งธ ์ค์ ์์ฐ์ N(1<=N<=100)์ด ์ฃผ์ด์ง๋๋ค.
๋ ๋ฒ์งธ ์ค์ N๊ฐ์ ์์ฐ์๊ฐ ๊ณต๋ฐฑ์ ์ฌ์ด์ ๋๊ณ ์ ๋ ฅ๋ฉ๋๋ค. ๊ฐ ์์ฐ์๋ ์ ์ํ ๋ฒ์ ์์ ์์ต๋๋ค.
์ถ๋ ฅ
์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ๋ ์์ด์ ์ถ๋ ฅํฉ๋๋ค.
์์ ์ ๋ ฅ 1
6
11 7 5 6 10 9
์์ ์ถ๋ ฅ 1
5 6 7 9 10 11
๋ฌธ์ ํ์ด 1
public int[] solution(int n, int[] arr)
{
for (int i = 1; i < n; i++)
{
int key = i;
for (int j = i-1; j >= 0; j--)
{
if (arr[key] < arr[j]) {
int tmp = arr[key];
arr[key] = arr[j];
arr[j] = tmp;
}
key--;
}
}
return arr;
}
๐ฉ๐ป : ์ฐ์ ์ฝ์ ์ ๋ ฌ์ด๋ i๊ฐ 1๋ถํฐ ์์ํ๊ณ , j๋ i-1 ๋ถํฐ 0๊น์ง ๋๋ฉด์ ์ ๋ ฌํ๋ ๊ฒ์ด๋ค.
๋๋ key ๋ผ๋ ๋ณ์๋ฅผ ํ๋ ๋ง๋ค๊ณ key์ ํ์ฌ i ์ ๊ฐ์ ๋ด์๋ค.
๊ทธ ํ ๋๋ฒ์งธ for๋ฌธ ์์์ arr[key]์ arr[j]์ ๊ฐ์ ๋น๊ตํด์ arr[j]๊ฐ arr[key]๋ณด๋ค ์์ผ๋ฉด ๊ทธ ๊ฐ์ ๊ตํํด์คฌ๊ณ , key ์ ๊ฐ์ 1์ฉ ๊ฐ์์์ผฐ๋ค.
์ ๋ ฌํด์ค ๋ค์ arr ๋ฅผ ๋ฆฌํดํ๋ค.
๋ฌธ์ ํ์ด 2
public int[] solution2(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;
}
๐พ : ๊ฐ์ฌ๋์ i๊ฐ 1์ผ๋, j๋ i-1 ์ฆ 0 ๊น์ง ๋๋ฉด์ tmp ๋ผ๋ ๋ณ์๋ฅผ ํ๋ ๋ง๋ค๊ณ tmp์๋ arr[i] ์ ๊ฐ์ ๋ฃ์ด๋๊ณ , arr[i]์ arr[j]์ ๊ฐ์ ๋น๊ตํ๋ค. ์ด๋ arr[j]๊ฐ tmp ๋ณด๋ค ์์ผ๋ฉด arr[j+1] ์ arr[j]์ ๊ฐ์ ๋ฃ๊ณ (์๋ฆฌ ๋ฐ๊ฟ) ๋ง์ฝ arr[j]๊ฐ tmp๋ณด๋ค ํฌ๋ฉด break ํด์คฌ๋ค. break ํ๋ฉด ๋๋ฒ์งธ ๋ฐ๋ณต๋ฌธ์ ๋์์ arr[j+1]์ tmp ๊ฐ์ ๋ฃ์ผ๋ฉด ๋๋ค.
(๋๋ฒ์งธ ๋ฐ๋ณต๋ฌธ์ ๋๋ธ arr[j+1] = tmp๋ j๊ฐ -1 ์ผ๋๋ก -1 + 1 ์ฆ, arr[0]์ tmp ๊ฐ์ ๋ฃ๋ ๋ค๋ ๊ฒ์ด๋ค. )