Post

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

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

📔 문제 설명

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

💡 입출력 예

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

💻내가 작성한 코드

코드 실행하면 통과하는데, 제출 후 채점하기를 누르면 계속해서 실패하는 테스트들이 발생…😢

💻다른 사람 코드

Math.log2() : 숫자를 log2로 반환

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

거듭제곱을 만드는 숫자를 Math.log2()를 올림하여 구함

This post is licensed under CC BY 4.0 by the author.