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

HICHULOG·2023년 9월 11일
0

프로그래머스

목록 보기
28/38
post-thumbnail

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

📝 문제

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

⛔️ 제한 사항

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

⁕ 입출력 예

arrresult
[1, 2, 3, 4, 5, 6][1, 2, 3, 4, 5, 6, 0, 0]
[58, 172, 746, 89][58, 172, 746, 89]

💡 풀이

function solution(arr) {
    const arrLength = arr.length;
    let exponent = 0;
    
    while(Math.pow(2,exponent) < arrLength) exponent ++;
    
    let fillNum = Math.pow(2,exponent)-arrLength;
    
    const zArr = Array(fillNum).fill(0);
    
    return arr.concat(zArr);
}

✅ 다른 풀이

function solution(arr) {
  const length = arr.length;
  const totalLength = 2 ** Math.ceil(Math.log2(length));
  return [...arr, ...new Array(totalLength - length).fill(0)];
}

🚀 TIL

profile
🚀 Front-end Dev

0개의 댓글