문제 설명
정수 배열 arr이 매개변수로 주어집니다. arr의 길이가 2의 정수 거듭제곱이 되도록 arr 뒤에 정수 0을 추가하려고 합니다. arr에 최소한의 개수로 0을 추가한 배열을 return 하는 solution 함수를 작성해 주세요.
제한사항
1 ≤ arr의 길이 ≤ 1,000 1 ≤ arr의 원소 ≤ 1,000
나의 코드
import java.util.Arrays;
class Solution {
public int[] solution(int[] arr) {
int length = arr.length;
int newLength = 1;
while(newLength<length) {
newLength *= 2;
}
int[] answer = Arrays.copyOf(arr, newLength);
return answer;
}
}
다른 사람 코드
import java.util.*;
class Solution {
public int[] solution(int[] arr) {
int length = 1;
while (length < arr.length) {
length *= 2;
}
return Arrays.copyOf(arr, length);
}
}
나의 코드와 비슷한데, int
변수를 하나만 가지고 풀어냈다.
느낀 점
처음엔 배열에 요소를 추가해줘야 하는 문제같아서 List
로 풀어보려 했으나, 2의 거듭제곱을 알아내기에 막막했다 🥲 다시 처음으로 돌아가, arr
의 길이보다 첫 번째로 큰 2의 거듭제곱일 때까지 길이를 만들고 새 배열을 선언하여 그만큼 복사하여 만들어줬다. 방법을 떠올리기가 좀 까다로웠던 문제다. 그렇지만 거듭제곱 관련 문제가 자주 등장할 수 있기에 해당 알고리즘을 기억해두자.