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

febCho·2024년 3월 17일
0

코딩테스트

목록 보기
96/253
post-thumbnail

문제

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

- 제한사항

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

풀이

여기서 핵심은 0을 얼마나 추가해야 하는지 계산하기 위해 targetLength *= 2;로 2의 거듭제곱이 될 때까지 2배로 증가시킨다는 점이다.

그 다음 원본 배열인 arr을 targetLength 길이까지 복사해 새로운 배열 int[] result를 만들고, arr의 길이부터 targetLength 전까지의 인덱스 값은 0을 저장해 주면 된다.

import java.util.Arrays;

class Solution {
    public int[] solution(int[] arr) {
        int length = arr.length;
        
        int targetLength = 1;
        while(targetLength < length) {
            targetLength *= 2;
        }

        int[] result = Arrays.copyOf(arr, targetLength);
        for (int i=length; i<targetLength;i++) {
            result[i] = 0;
        }
        
        return result;
    }
}

결과

profile
Done is better than perfect.

0개의 댓글