한 걸음씩
[프로그래머스][JS] 배열의 길이를 2의 거듭제곱으로 만들기 본문
https://school.programmers.co.kr/learn/courses/30/lessons/181857
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이 과정
function solution(arr) {
// 2의 거듭제곱이 0인 경우와 1인 경우
if (arr.length === 0){
return [0]
}else if (arr.length === 1){
return arr
}
// 2의 거듭제곱
for (let i = 1; i < arr.length; i++){
if ((2 ** i) === arr.length){ // 2의 거듭제곱과 배열의 길이가 같은 경우
return arr
}else if ((2 ** i) > arr.length){ // 2의 거듭제곱이 배열의 길이보다 큰 경우
// (2 ** i)배열 길이 - arr 배열 길이만큼 새 배열 생성 후 0으로 채우기
const newArr = Array((2 ** i) - (arr.length)).fill(0)
return arr.concat(newArr) // concat 메서드로 두 배열 합치기
break // 반복 중단
}
}
}
반복문을 보면 2 ** 1 = 2부터 시작하는 걸 볼 수 있는데, 0과 1인 경우를 처리를 해줘야 한다.
그래서 arr배열의 길이가 0인 경우 [0]을 채워서 반환하고
1인 경우 arr 배열자체만을 반환하면 된다.
리뷰
문제를 거의 다 풀었는데 2의 거듭제곱만 신경 쓰다 보니까 0과 1을 고려하지 않았다.
'Programmers' 카테고리의 다른 글
[프로그래머스][JS] qr code (1) | 2023.06.11 |
---|---|
[프로그래머스][JS] 수열과 구간 쿼리 4 (0) | 2023.06.11 |
[프로그래머스][JS] 컨트롤 제트 (0) | 2023.06.10 |
[프로그래머스][JS] 빈 배열에 추가, 삭제하기 ✅ (0) | 2023.06.09 |
[프로그래머스][JS] 문자열이 몇 번 등장하는지 세기 (0) | 2023.06.09 |