inblog logo
|
silver
    알고리즘문제풀기

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

    silver's avatar
    silver
    Apr 16, 2025
    [알고리즘문제풀기] 배열의 길이를 2의 거듭제곱으로 만들기
    Contents
    문제내가 작성한 정답다른 사람들의 정답

    문제

    school.programmers.co.kr
    https://school.programmers.co.kr/learn/courses/30/lessons/181857

    내가 작성한 정답

    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

    RSS·Powered by Inblog