본문 바로가기

프로그래머스(Java)/Level 0

[프로그래머스] 배열의 길이를 2의 거듭제곱으로 만들기

728x90

코드 힌트

이 문제에서는 주어진 배열 arr의 길이보다 크거나 같은 가장 작은 2의 제곱수 크기의 배열을 만들어야 합니다. 그런 다음, 새로 만든 배열에 기존 배열의 값을 복사합니다. 

  1. 2의 제곱수 찾기:
    • 배열의 길이보다 크거나 같은 가장 작은 2의 제곱수를 찾기 위해 반복문을 사용합니다. 이 과정에서 n을 반복적으로 2배씩 증가시켜 나갑니다.
    • 예를 들어, 배열의 길이가 5라면, 크거나 같은 2의 제곱수는 8입니다 (2^3 = 8).
  2. 새로운 배열 생성 및 값 복사:
    • 2의 제곱수 크기의 배열을 생성한 후, 기존 배열의 값을 새 배열에 차례대로 복사합니다. 만약 기존 배열의 길이가 2의 제곱수보다 작다면, 나머지 부분은 0으로 채워집니다.

정답은 더보기 클릭

더보기
class Solution {
    public int[] solution(int[] arr) {
        // 1. 초기 n 값 설정: 배열의 길이보다 크거나 같은 가장 작은 2의 제곱수를 찾기 위한 변수입니다.
        int n = 1;
        
        // 2. 배열의 길이보다 크거나 같은 가장 작은 2의 제곱수를 찾는 과정입니다.
        // 배열의 길이보다 작은 동안 n을 2배씩 늘려나갑니다.
        while (arr.length > n) {
            n *= 2;
        }
        
        // 3. 결과 배열 생성: 크기가 n인 배열을 생성합니다. 초기값은 모두 0입니다.
        int[] result = new int[n];
        
        // 4. 기존 배열의 값을 결과 배열에 복사합니다.
        // arr의 값을 차례로 result에 복사합니다.
        for (int i = 0; i < arr.length; i++) {
            result[i] = arr[i];
        }
        
        // 5. 결과 배열을 반환합니다. 결과 배열은 크기가 2의 제곱수이며, 기존 배열의 값을 그대로 포함합니다.
        return result;
    }
}

 

728x90