문제
n이 어떤 0 이상의 정수 k에 대해 2ᵏ와 같은지 결정하세요 (1, 2, 4, 8, …).
is_power_of_two(n)을 구현하세요.
입력
n: 확인할 숫자입니다.
출력
n이 2의 거듭제곱이면 true를 반환하세요.
제약 조건
-10¹⁸ ≤ n ≤ 10¹⁸
예시
예시 1
입력:
n = 64
예상 출력:
expected = True
입력:
long long n = 64;
예상 출력:
bool expected = true;
입력:
long n = 64;
예상 출력:
bool expected = true;
설명
64 = 2⁶입니다.
예시 2
입력:
n = 12
예상 출력:
expected = False
입력:
long long n = 12;
예상 출력:
bool expected = false;
입력:
long n = 12;
예상 출력:
bool expected = false;
설명
12 = 4 × 3으로, 홀수 인수가 있으므로 2의 거듭제곱이 아닙니다.
접근 방법
먼저 스스로 풀어 본 뒤 힌트를 하나씩 열어 보세요.
힌트 1
2의 거듭제곱은 이진수에서 비트가 정확히 하나만 켜져 있습니다.
힌트 2
비트 기반 검사를 하기 전에 양수인지 먼저 확인하세요.
힌트 3
음수와 0은 2의 거듭제곱이 아닙니다.
예상 복잡도
시간 O(1), 추가 공간 O(1)
참고 자료
이 문제는 CodeUtility에 맞게 수정되었습니다. 위의 설명과 제한 조건을 따르세요.