[알고리즘문제풀기] 배열의 길이를 2의 거듭제곱으로 만들기

silver's avatar
Apr 16, 2025
[알고리즘문제풀기] 배열의 길이를 2의 거듭제곱으로 만들기

문제

내가 작성한 정답

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

silver