๐ก arr ๋ฐฐ์ด์ ๊ธธ์ด๊ฐ 2์ ๊ฑฐ๋ญ์ ๊ณฑ์ด ์๋๋ผ๋ฉด,
๊ทธ ๋ค์ ์ต์์ 2์ ๊ฑฐ๋ญ์ ๊ณฑ ๊ฐ๊น์ง 0 ๊ฐ์ ๋ฐฐ์ด์ ์ถ๊ฐํด์ผํ๋ค.
1. arr.length ๊ฐ 2์ ๊ฑฐ๋ญ์ ๊ณฑ์ด๋ผ๋ฉด ?
-> 0์ ์ถ๊ฐํ์ง์๊ณ ์๋ ๊ฐ๋ง ์ถ๋ ฅํด์ฃผ๋ฉด๋๋ค.
2. arr.length ๊ฐ 2์ ๊ฑฐ๋ญ์ ๊ณฑ์ด ์๋๋ผ๋ฉด?
-> ์ด ์กฐ๊ฑด์์ ๋ง๋๋๊ฒ ์กฐ๊ธ ๊น๋ค๋ก์ ๋๋ฐ
์ด ๊ฒฝ์ฐ๋, 2์ ๊ฑฐ๋ญ์ ๊ณฑ ์ง์๊ฐ n์ ์ํํ๋ฉด์
arr.length ๊ฐ 2^n ๋ณด๋ค ์์ ๊ทธ ์๊ฐ์ ์ก์๋ค (= ์ด ๋ถ๋ถ์ด ๋ค์ ์ต์์ 2์ ๊ฑฐ๋ญ์ ๊ณฑ ๊ธธ์ด๊ฐ์ด ๋จ)
๊ทธ ๊ฑฐ๋ญ์ ๊ณฑ ๊ฐ๋งํผ arr ์ 0์ ์ถ๊ฐํด์ฃผ๋ฉด ๋๋ค.
(+) arr ์ ๊ธธ์ด๋ 1000๋ณด๋ค ๊ฐ๊ฑฐ๋ ์๋ค๊ณ ์กฐ๊ฑด์ด ๋์์๊ธฐ ๋๋ฌธ์
2์ ๊ฑฐ๋ญ์ ๊ณฑ ๊ฐ์ 1024๊ฐ ๋์ค๋ 10์ผ๋ก ์ก์์ค๋ค.
๐ฌ Math.pow(2,n) :: ๊ฑฐ๋ญ์ ๊ณฑ ๊ตฌํ๋ ๋ฉ์๋
import java.util.ArrayList;
import java.lang.Math;
class Solution {
public ArrayList<Integer> solution(int[] arr) {
ArrayList<Integer> answer = new ArrayList<>();
//2์ ์ ์ ๊ฑฐ๋ญ์ ๊ณฑ pow(2,n) 2 4 8 16 32 ~
int cnt = 0;
for (int a : arr){
answer.add(a); //arr ๊ฐ ๋ฃ๊ธฐ
}
for (int i = 0; i <= 10; i++){ //๊ธธ์ด๊ฐ 2์ ๊ฑฐ๋ญ์ ๊ณฑ์ธ์ง
if (arr.length == Math.pow(2,i)){ // 2๊ฑฐ๋ญ์ ๊ณฑ์ด๋ฉด ์ถ๊ฐ ํ ํ์์์
cnt = 0;
break;
}else if (arr.length < Math.pow(2,i)){ //6 == 24'8'1632
cnt = i; // ์ง์๊ฐ ์ฐพ์์ ๋ฃ๊ธฐ 3
break; //break ๋ฅผ ์ํด์ฃผ๋ฉด ๊ณ์ ๋๋ค.
}
}
// arr๊ธธ์ด๋ถํฐ ~ cnt (๊ฑฐ๋ญ์ ๊ณฑ๊ฐ๊น์ง)
for (int j = arr.length; j<Math.pow(2,cnt); j++){
answer.add(0);
}
return answer;
}
}
์ฒซ๋ฒ์งธ ์๋) ์คํจ ใ ใ
break ๋ฌธ์ ๊ฑธ์ด์ฃผ์ง ์์์ ๊ณ์ for ๋ฌธ์ด ๋๋ฉฐ ์กฐ๊ฑด์ ๋ง๋ ๊ฐ์ ์ฐพ๋ ํ์์ด ๋ฐ์ํ๋ค.
import java.util.ArrayList;
import java.lang.Math;
class Solution {
public ArrayList<Integer> solution(int[] arr) {
ArrayList<Integer> answer = new ArrayList<>();
//2์ ์ ์ ๊ฑฐ๋ญ์ ๊ณฑ pow(2,n) 2 4 8 16 32 ~
int cnt = 0;
for (int a : arr){
answer.add(a); //arr ๊ฐ ๋ฃ๊ธฐ
}
for (int i = 0; i <= 10; i++){ //๊ธธ์ด๊ฐ 2์ ๊ฑฐ๋ญ์ ๊ณฑ์ธ์ง
if (arr.length == Math.pow(2,i)){ //3
cnt = i; //๊ฑฐ๋ญ์ ๊ณฑ์
}
}
// arr ๋๊ฐ ~ cnt + 1 (๋ค์๊ฑฐ๋ญ์ ๊ณฑ๊ฐ๊น์ง)
for (int j = arr.length-1; j<Math.pow(2,cnt+1); j++){
answer.add(0);
}
// answer ๊ธธ์ด๋ ๊ฑฐ๋ญ์ ๊ณฑ ์ฌ์ด์ ๊ด๊ณ
// (2**n) 2**10 => 512 1024
//๊ธธ์ด๊ฐ 1000๊น์ง.
return answer;
}
}