
내가 작성한 코드
import java.util.*;
class Solution {
public int[] solution(int[] arr) {
int length = 1; // 초기 길이 설정
while (length < arr.length) { // length가 배열 길이보다 작을 때 반복
length *= 2; // length를 2배로 증가
}
return Arrays.copyOf(arr, length);
}
}
다른 사람의 코드
import java.util.Arrays;
class Solution {
public int[] solution(int[] arr) {
// Math.log(arr.length) / Math.log(2) → log₂(arr.length) → 배열 길이의 로그값을 밑이 2인 로그로 변환
// Math.ceil() → 올림해서 가장 가까운 큰 정수 지수 구함 → 필요한 2의 거듭제곱 크기
// Math.pow로 실제 배열 크기 계산 → 2^올림된 지수
// copyOf로 배열 크기를 확장 (남는 부분은 0으로 채워짐)
return Arrays.copyOf(arr, (int) Math.pow(2, Math.ceil(Math.log(arr.length) / Math.log(2))));
}
}
Share article