배열의 길이를 2의 거듭제곱으로 만들기

nacSeo (낙서)·2024년 2월 29일
0

프로그래머스

목록 보기
109/169

문제 설명

정수 배열 arr이 매개변수로 주어집니다. arr의 길이가 2의 정수 거듭제곱이 되도록 arr 뒤에 정수 0을 추가하려고 합니다. arr에 최소한의 개수로 0을 추가한 배열을 return 하는 solution 함수를 작성해 주세요.

제한사항

1 ≤ arr의 길이 ≤ 1,000
1 ≤ arr의 원소 ≤ 1,000

나의 코드

import java.util.Arrays;

class Solution {
    public int[] solution(int[] arr) {
        int length = arr.length;
        int newLength = 1;
        while(newLength<length) {
            newLength *= 2;
        }
        int[] answer = Arrays.copyOf(arr, newLength);
        return answer;
    }
}

다른 사람 코드

import java.util.*;

class Solution {
    public int[] solution(int[] arr) {
        int length = 1;

        while (length < arr.length) {
            length *= 2;
        }

        return Arrays.copyOf(arr, length);
    }
}

나의 코드와 비슷한데, int변수를 하나만 가지고 풀어냈다.

느낀 점

처음엔 배열에 요소를 추가해줘야 하는 문제같아서 List로 풀어보려 했으나, 2의 거듭제곱을 알아내기에 막막했다 🥲 다시 처음으로 돌아가, arr의 길이보다 첫 번째로 큰 2의 거듭제곱일 때까지 길이를 만들고 새 배열을 선언하여 그만큼 복사하여 만들어줬다. 방법을 떠올리기가 좀 까다로웠던 문제다. 그렇지만 거듭제곱 관련 문제가 자주 등장할 수 있기에 해당 알고리즘을 기억해두자.

profile
백엔드 개발자 김창하입니다 🙇‍♂️

0개의 댓글