작심삼일

[LeetCode] 231 | Power of Two | Python 본문

스터디/코테

[LeetCode] 231 | Power of Two | Python

yun_s 2021. 12. 21. 20:18
728x90
반응형

문제 링크: https://leetcode.com/problems/power-of-two/


문제

Given an integer n, return true if it is a power of two. Otherwise, return false.

An integer n is a power of two, if there exists an integer x such that n == $2^x$.


조건

  • -231 <= n <= 231 - 1

내 풀이

Iteration없이 풀어보려고 했다.

2의 제곱수는 비트 연산자를 사용하면 편하게 할 수 있다.

n이 2의 제곱수라면, 이를 이진수로 표현하면 1이 한개만 존재하게 되고, n-1은 그 밖의 모든 자리가 1로 표현된다.

그렇기 때문에 AND(&) 연산자를 사용하게되면 0이 나온다.

이때, 음수는 2의 제곱수가 아니므로 제외한다.


코드

class Solution:
    def isPowerOfTwo(self, n: int) -> bool:
        return n > 0 and n & (n-1) == 0
728x90
반응형
Comments