https://school.programmers.co.kr/learn/courses/30/lessons/181857
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
정수 배열 arr이 매개변수로 주어집니다. arr의 길이가 2의 정수 거듭제곱이 되도록 arr 뒤에 정수 0을 추가하려고 합니다.
arr에 최소한의 개수로 0을 추가한 배열을 return 하는 solution 함수를 작성해 주세요.
[처음 풀이]
아이디어 : arr 길이가 2의 제곱수인지 검사 : 어떻게? 2로 나누는걸로는 안되고 스퀘어 씌워서 정수인지 검사
코드:
function solution(arr) {
let ceil = Math.ceil(Math.sqrt(arr.length))
return Array(...arr, ...Array(2**ceil - arr.length).fill(0))
}
예제까지는 통과했지만 실행시켜보니 몇개의 오답 + 시간 초과으로 18.2 / 100점으로 실패..
애초에 접근이 잘못되었다는 지피티의 일침..
나는 왜 제곱근을 쓰면서 지수의 밑이 2로만 고정됐다고 생각한거지; ㅠㅜ 착각을 했다
[올바른 풀이]
function solution(arr) {
let len = arr.length;
let powerOfLen = 1;
while(powerOfLen < len){
powerOfLen *= 2;
}
return arr.concat(Array(powerOfLen - len).fill(0))
}
2를 곱해가면서 arr의 길이보다는 큰, 가장 작은 2의 제곱수를 찾는다
스프레드가 아닌 concat 을 사용할 수 있다!
'개발 공부 일지 > JavaScript' 카테고리의 다른 글
[프로그래머스] 특별한 이차원 배열 1 (0) | 2025.03.10 |
---|---|
[프로그래머스] 기초 - 전국 대회 선발 고사 (0) | 2025.03.07 |
[코어 자바스크립] 실행 컨텍스트 / 호이스팅 (1) | 2025.02.19 |
이벤트 핸들러를 할당하는 시점 (1) | 2025.02.07 |
DOM 요소 자체를 변수에 저장하자 (1) | 2025.02.04 |