문제
풀이
import java.util.*;
class Solution {
public int[] solution(int[] arr) {
return setArray(arr);
}
private int[] setArray(int[] arr) {
int length = arr.length;
while(!isPowerOfTwo(length)) {
length++;
}
int[] result = Arrays.copyOf(arr, length);
return result;
}
private boolean isPowerOfTwo(int n) {
/**
* 2의 거듭제곱 : 100..0 형태
* 2의 거듭제곱과 2의 거듭제곱 - 1 의 이진수를 AND 연산 시
* 100..0 과 011..1 의 AND 연산이 이루어짐
* 전체 값이 0 이 나옴(그러나 실제 값이 0 은 아님)
*/
return (n & (n - 1)) == 0 && n != 0;
}
}
import java.util.*;
class Solution {
public int[] solution(int[] arr) {
int length = 1;
while (length < arr.length) {
length *= 2;
}
return Arrays.copyOf(arr, length);
}
}
출처
https://school.programmers.co.kr/learn/courses/30/lessons/181857
'Algorithm > Programmers' 카테고리의 다른 글
[Programmers] Lv.0 / 문자열 묶기 / Java (0) | 2024.02.27 |
---|---|
[Programmers] Lv.0 / 배열 비교하기 / Java (0) | 2024.02.15 |
[Programmers] Lv.0 / 무작위로 K개의 수 뽑기 / Java (0) | 2024.02.07 |
[Programmers] Lv.0 / 배열 만들기 6 / Java (0) | 2024.02.06 |
[Programmers] Lv.0 / 빈 배열에 추가, 삭제하기 / Java (0) | 2024.02.05 |
댓글