[Java8] 코딩 기초 트레이닝 Day 20 highestOneBit(), stream(), HashMap 활용
·
Java
배열의 길이를 2의 거듭제곱으로 만들기이 문제의 관건은 거듭제곱이 되겠네요. 현재 배열의 길이가 거듭제곱인지 아닌지는 어떻게 알 수 있을까요? 당연히 이미 만들어진 함수가 존재합니다. 하지만 그전에 비트 연산자에 대해서 알아보겠습니다.public static boolean isPowerOfTwo(int n){ return n > 0 && (n & (n - 1)) == 0;}위에 함수는 n의 값이 거듭제곱인지 아닌지를 알 수 있습니다.if n = 6,6 → 0110 (2진수)n - 1 = 5 → 0101 (2진수)6 & 5 = 0100 -> 4 != 0so, return false;다음과 같은 함수를 통해 거듭제곱의 유무를 확인할 수 있습니다.하지만, highestOneBit() 라는 함수를 통해 문제를 ..