문제
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
메모
- 1은 2의 0승이므로 arr의 길이가 2 미만이면 arr를 정답으로 그대로 출력한다.
- 두 배열을 합칠 때 push(), flat() 대신 스프레드 연산자(...)를 활용해서 표현할 수 있다.
// 배열 합치기 - push(), flat()
let arr1 = [1, 2, 3, 4, 5];
let arr2 = [0, 0, 0];
arr1.push(arr2);
console.log(arr1.flat());
// Expected output:[ 1, 2, 3, 4, 5, 0, 0, 0 ]
// 배열 합치기 - [스프레드 연산자(...)]
let arr1 = [1, 2, 3, 4, 5];
let arr2 = [0, 0, 0];
console.log([...arr1, ...arr2]);
// Expected output:[ 1, 2, 3, 4, 5, 0, 0, 0 ]
정답
function solution(arr) {
// 2의 0승은 1이므로 arr의 길이가 2 미만이면 arr 그대로 정답 출력
if (arr.length < 2) {
return arr;
} else {
// arr의 길이가 2 이상이면 num의 초기값을 2로 둔다
// num이 arr의 길이보다 같거나 커질 때까지 while문을 돌린다
// arr의 길이가 num보다 크면 num에 2를 반복해서 곱한다
let num = 2;
while (arr.length > num) {
num *= 2;
}
// 배열 첫 번째 값으로 arr를 복사해 넣는다
// 배열 두 번째 값으로 num에서 arr의 길이를 뺀 만큼의 배열을 만들어 0으로 채워 넣는다
return [...arr, ...Array(num - arr.length).fill(0)];
}
}