[JAVA 문제 풀이] 185. 배열의 길이를 2의 거듭제곱으로 만들기

프로그래머스 (181857)
Stupefyee's avatar
Apr 08, 2025
[JAVA 문제 풀이] 185. 배열의 길이를 2의 거듭제곱으로 만들기
notion image
 

내가 작성한 코드

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

stupefyee