문제 설명
정수 배열 arr이 매개변수로 주어집니다. arr의 길이가 2의 정수 거듭제곱이 되도록 arr 뒤에 정수 0을 추가하려고 합니다. arr에 최소한의 개수로 0을 추가한 배열을 return 하는 solution 함수를 작성해 주세요.
제한사항
- 1 ≤ arr의 길이 ≤ 1,000
- 1 ≤ arr의 원소 ≤ 1,000
입출력 예
arr | result |
[1, 2, 3, 4, 5, 6] | [1, 2, 3, 4, 5, 6, 0, 0] |
[58, 172, 746, 89] | [58, 172, 746, 89] |
풀이
import java.util.*;
class Solution {
public int[] solution(int[] arr) {
int len = arr.length;
int pow = (int) Math.ceil(Math.log(len) / Math.log(2));
int newLen = (int) Math.pow(2, pow);
if(newLen == len) return arr;
else return Arrays.copyOf(arr, newLen);
}
}
'Coding Test > 프로그래머스[JAVA]' 카테고리의 다른 글
[프로그래머스 Lv0.] 181871번 문자열이 몇 번 등장하는지 세기 (JAVA) (0) | 2024.10.23 |
---|---|
[프로그래머스 Lv0.] 181860번 빈 배열에 추가, 삭제하기 (JAVA) (0) | 2024.10.23 |
[프로그래머스 Lv0.] 181838번 날짜 비교하기 (JAVA) (0) | 2024.10.23 |
[프로그래머스 Lv0.] 181942번 문자열 섞기 (JAVA) (0) | 2024.10.23 |
[프로그래머스 Lv0.] 181931번 등차수열의 특정한 항만 더하기 (JAVA) (0) | 2024.10.23 |