▶전개연산자(...) & ▶fill() 함수&함수& ▶거듭제곱을 활용한 간단한 문제가 있어 정리해보고자 합니다.
문제설명
정수 배열 arr이 매개변수로 주어집니다. arr의 길이가 2의 정수 거듭제곱이 되도록 arr 뒤에 정수 0을 추가하려고 합니다. arr에 최소한의 개수로 0을 추가한 배열을 return 하는 solution 함수를 작성해 주세요.
제한사항
- 1 ≤ arr의 길이 ≤ 1,000
- 1 ≤ arr의 원소 ≤ 1,000
입출력 예 & 설명
입출력 예 #1
- 예제 1번의 arr의 길이는 6입니다. arr의 길이를 2의 정수 거듭제곱으로 만드는 방법은 0을 2개, 10개, 26개,..., 추가하는 방법이 있고 그중 최소한으로 0을 추가하는 방법은 2개를 추가하는 것입니다. 따라서 [1, 2, 3, 4, 5, 6, 0, 0]을 return 합니다.
입출력 예 #2
- 예제 2번의 arr의 길이는 4이고 이미 2의 정수 거듭제곱입니다. 따라서 뒤에 0을 추가하지 않아도 되므로 [58, 172, 746, 89]를 return 합니다.
나의 풀이
이번 문제에서는 while문과 for문 반복문 2개를 사용하여 풀어봤습니다.
먼저 arr배열의 요소를 전개연산자(...)를 사용하여 answer 변수에 전개하여 담아주었습니다.
그리고 while문에서 사용할 변수 num을 1로 초기화해 줍니다.
5번째 줄에서 arr배열의 길이가 num보다 클 때까지 반복하는 while문을 선언해 주고, arr길이보다 큰 2의 거듭제곱을 만들어서 num 변수에 저장을 했습니다.
그러면 변수 num은 입출력 예 #1 에선 8이 입출력 예#2에선 0이 저장됩니다.
문제에서 0을 2의 arr의 길이가 최소한의 개수의 2의 거듭제곱이 여야 하기 때문에 num - arr의 길이만큼 for문을 돌려주었습니다. 그렇게 되면 입출력 예 #1 에선 2번, 입출력 예#2에선 0번 반복을 하게 됩니다.
마지막으로 0을 push() 함수를 사용하여 answer에 push를 하고 마무리했습니다.
다른 풀이
다른 풀이에서는 while문에서 거듭제곱 연산자(**)를 사용하여 위에서 0으로 초기화한 i를 증감연산자를 사용하여 arr의 길이가 2의 거듭제곱보다 클 때까지 반복해 줍니다.
그러면 입출력 예 #1에서 i는 증감연산자 때문에 해당 조건을 만족할 때까지 증감하여 i = 3 이 형성됩니다.
그리고 전개 연산자(...)를 사용하여 arr배열을 복사해 주고 Array()과 fill() 함수를 사용하여 0을 채워주었습니다.
... new Array(2 ** i - arr.length). fill(0) → 입출력 예 #1에서는 i가 3이 될 것이고, 그러면 길이가 2인 배열을 만들어준 다음에 fill() 함수를 사용하여 0으로 채워줍니다.
=> [0,0]을 그리고 전개연산자(...)를 사용하여 해당 요소를 전개해 줍니다.
[JavaScript] 거듭제곱 알아보기
JavaScript에서 거듭제곱을 구하는 방법은 크게 3가지가 있습니다. n*n JavaScript 내장함수인 Math.pow() ES6 문법의 (**) 1. n * n 일반적으로 가장 기본적인 구문입니다. 주어진 숫자를 그냥 곱해서 제곱근
pixx.tistory.com
[JavaScript] 전개 연산자(Spread Operator) [...] 와 Rest Parameter
전개 연산자(Spread Operator) 전개 연산자(스프레드 연산자 ...)는 배열의 요소나 반복 가능한 객체 등의 요소를 전개하거나 나열해주는 연산자 입니다. apply()를 이용하여 배열의 요소 전개하기 functi
pixx.tistory.com
▶fill() 함수
[JavaScript] fill() 함수 알아보기
fill() fill(value) fill(value, start) fill(value, start, end) value (필수) 해당 배열 위치에 넣을 값. value가 객체인 경우, 배열의 각 슬롯은 해당 객체를 참조합니다. start (옵션) 0 기반으로 채우기를 시작할 인
pixx.tistory.com
'Coding Test > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 문자열 묶기 (JavaScript) (1) | 2024.02.11 |
---|---|
[프로그래머스] 세 개의 구분자 (JavaScript) (1) | 2024.02.09 |
[프로그래머스] 문자열이 몇 번 등장하는지 세기 (JavaScript) (1) | 2024.02.07 |
[프로그래머스] 수열과 구간 쿼리3 (JavaScript) (0) | 2024.02.06 |
[프로그래머스] 빈 배열에 추가, 삭제하기 (JavaScript) (1) | 2024.02.03 |