문제
내가 작성한 정답
Math.pow
class Solution {
public int[] solution(int[] arr) {
int len = arr.length;
int num = 0;
for(int i=1; i<=len/2;i++){
int p = (int) Math.pow(2,i);
if(len/p >0 && len % p!=0){
num = (int)Math.pow(2,i)-len%p;
}
}
return Arrays.copyOf(arr,len+num);
// int[] answer = new int[len+num];
// for(int i = 0; i <len+num; i++){
// if(i < len) answer[i] =arr[i];
// else answer[i] = 0;
// }
// return answer;
}
}
while
import java.util.Arrays;
class Solution {
public int[] solution(int[] arr) {
int n = 1;
while (n < arr.length){
n *= 2;
}
return Arrays.copyOf(arr,n);
}
}
다른 사람들의 정답
Math.log
: arr.length를 밑이 2인 로그로 만들어 올림한 후 2의 지수로 보내서 길이보다 큰! 가장 작은 2의 거듭제곱을 찾아 길이를 정한다.
import java.util.Arrays;
class Solution {
public int[] solution(int[] arr) {
return Arrays.copyOf(arr, (int) Math.pow(2, Math.ceil(Math.log(arr.length) / Math.log(2))));
}
}
Share article