https://school.programmers.co.kr/learn/courses/30/lessons/181881
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
ํ๋ก๊ทธ๋๋จธ์ค : ์กฐ๊ฑด์ ๋ง๊ฒ ์์ด ๋ณํํ๊ธฐ 2
์ด ๋ฌธ์ ๋ฅผ ํ๋ค๊ฐ..
์ฒ์ ์๋ํ ์ฝ๋ :
class Solution {
public int solution(int[] arr) {
int answer = 0;
int[] arrTmp2 = new int[arr.length];
int[] arrTmp = new int[arr.length];
System.arraycopy(arrTmp, 0, arrTmp2,0, arrTmp.length);
for (int i = 0; i < arr.length; i++) {
if (arr[i] >= 50 && arr[i] % 2 == 0) {
arr[i] /= 2;
} else if (arr[i] <= 50 && arr[i] % 2 != 0) {
arr[i] = arr[i] * 2 + 1;
}
}
System.arraycopy(arr, 0, arrTmp, 0, arr.length);
while (answer < arr.length - 1 && arrTmp2[answer] != arrTmp[answer]) {
for (int i = 0; i < arr.length; i++) {
if (arr[i] >= 50 && arr[i] % 2 == 0) {
arr[i] /= 2;
} else if (arr[i] <= 50 && arr[i] % 2 != 0) {
arr[i] = arr[i] * 2 + 1;
}
}
System.arraycopy(arr, 0, arrTmp,0, arr.length);
for (int i = 0; i < arrTmp.length; i++) {
if (arrTmp[i] != arrTmp2[i]) {
answer++;
break;
}
}
}
return answer;
}
}
์ด๋ ๊ฒ ํ์ ๋ ํ
์คํธ์ผ์ด์ค์์ ์ผ๋ถ๋ง ํต๊ณผํ๋ ์ด์ ๋ฅผ ์ฐพ๋ค๊ฐ
๊ฐ ๋ณต์ฌ์ ์ฐธ์กฐ ๋ณต์ฌ์ ๋ํด ํ์ธํ ์ ์์๋ค
1. ๊ฐ ๋ณต์ฌ
๊ฐ ๋ณต์ฌ๋ ๋ณ์์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ์ง์ ๋ณต์ฌํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค
- ๋ณต์ฌ๋ ๋ณ์๋ ๋
๋ฆฝ์ ์ธ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๋ฉฐ, ์๋ณธ ๋ณ์์ ๋ณ๊ฒฝ์ด ๋ณต์ฌ๋ณธ์ ์ํฅ์ ๋ฏธ์น์ง ์์ต๋๋ค
- ๊ฐ ๋ณต์ฌ๋ ๊ธฐ๋ณธ ๋ฐ์ดํฐ ์ ํ (์ ์, ๋ถ๋ ์์์ , ๋ฌธ์ ๋ฑ)์ ์ ์ฉ๋ฉ๋๋ค
- ๊ฐ ๋ณต์ฌ๋ ๋ฐ์ดํฐ๊ฐ ๋ณต์ฌ๋จ์ผ๋ก์จ ๋ฉ๋ชจ๋ฆฌ์ ๋ ๊ฐ์ ๋
๋ฆฝ์ ์ธ ๋ฐ์ดํฐ๊ฐ ์์ฑ๋ฉ๋๋ค
2. ์ฐธ์กฐ ๋ณต์ฌ
์ฐธ์กฐ ๋ณต์ฌ๋ ๋ณ์์ ์ ์ฅ๋ ๋ฐ์ดํฐ๊ฐ ๊ฐ์ฒด๋ ๋ฐฐ์ด๊ณผ ๊ฐ์ ์ฐธ์กฐ ์ ํ์ผ ๋, ํด๋น ๋ฐ์ดํฐ์ ๋ํ ์ฐธ์กฐ(๋ฉ๋ชจ๋ฆฌ ์ฃผ์)๋ฅผ ๋ณต์ฌํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค
๋ณต์ฌ๋ ๋ณ์์ ์๋ณธ ๋ณ์๋ ๋์ผํ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๋ฆฌํค๋ฉฐ, ์๋ณธ ๋ณ์์ ๋ณ๊ฒฝ์ด ๋ณต์ฌ๋ณธ์๋ ์ํฅ์ ๋ฏธ์นฉ๋๋ค
์ฐธ์กฐ ๋ณต์ฌ๋ ๊ฐ์ฒด, ๋ฐฐ์ด, ์ปฌ๋ ์
๋ฑ๊ณผ ๊ฐ์ ์ฐธ์กฐ ์ ํ์ ์ ์ฉ๋ฉ๋๋ค
์ฐธ์กฐ ๋ณต์ฌ๋ ๋ฐ์ดํฐ์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๊ฐ ๋ณต์ฌ๋จ์ผ๋ก์จ ๋ ๋ณ์๊ฐ ๋์ผํ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๋ฆฌํค๊ฒ ๋ฉ๋๋ค
๋ฐฐ์ด์ ๊ฒฝ์ฐ System.arraycopy ๋ฉ์๋๋ ์ฐธ์กฐ ๋ณต์ฌ ๋ฉ์๋๋ก, ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํ๋๋ผ๋ ์๋ณธ ๋ฐฐ์ด์ ์ฐธ์กฐ๋ฅผ ๋ณต์ฌํ๋ ๊ฒ์ด๋ฏ๋ก, ๋ฐ๋ณต๋ฌธ์ ๊ฒฐ๊ณผ๊ฐ ์ํฅ์ ๋ฏธ์น์ง ์๋๋ค!
+ ๊ฐ ๋ณต์ฌ ๋ฉ์๋๊ฐ ๊ฐ์ฒด์ ๊ฐ์ ๊ฐ์ ธ์ค๊ธฐ ๋๋ฌธ์ ๊ฐ์ฒด๊ฐ ๋ณต์กํด์ง ๊ฒฝ์ฐ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ๋ ๋ง๊ฒ ๋๋ฏ๋ก ์ฌ์ฉ์ ์ฐธ๊ณ ํ ๊ฒ
=> Arrays.copyOf (๊ฐ ๋ณต์ฌ) ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์ ๋ต
import java.util.Arrays;
class Solution {
public int solution(int[] arr) {
int[] arrTmp = Arrays.copyOf(arr, arr.length);
int[] arrTmp2;
int answer = 0;
do {
arrTmp2 = Arrays.copyOf(arrTmp, arrTmp.length);
for (int i = 0; i < arrTmp.length; i++) {
if (arrTmp[i] >= 50 && arrTmp[i] % 2 == 0) {
arrTmp[i] /= 2;
} else if (arrTmp[i] < 50 && arrTmp[i] % 2 != 0) {
arrTmp[i] = arrTmp[i] * 2 + 1;
}
}
answer++;
} while (!Arrays.equals(arrTmp, arrTmp2));
return answer - 1;
}
}
'TIL, WIL > TIL๐' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
10. 30 TIL : ์ฟผ๋ฆฌ (0) | 2023.10.30 |
---|---|
10. 17 TIL : ์ฟผ๋ฆฌ (0) | 2023.10.17 |
09. 22 TIL : SQL ๋ค์ด๋๋ฏน ์ฟผ๋ฆฌ (0) | 2023.09.22 |
09. 18 TIL : ์๋ฐ๋ฅผ ๋ค๋ฃจ๋ค ๋ฐฐ์ด ๋ช ๊ฐ์ง ํฌ์ธํธ (0) | 2023.09.18 |
09. 11 TIL : ์ฟผ๋ฆฌ ๋ง์คํฐ๋ก์ ๊ธธ.. (0) | 2023.09.12 |