반응형
2의 제곱인지를 검사하는 문제입니다.
입력되는 값 $N$의 범위가 $ 1 \leq N \leq 2^{30} $ 이라서 int 범위 안에서 조절할 수 있다는 걸 알 수 있었습니다.
그리고 2로 계속 나누면서 feasibility를 검사하는 것은 시간 초과가 나올 것 같다는 생각이 들었습니다.
그래서 저는 문제의 제목이 2의 제곱인만큼 비트를 검사하는 것이 아닐까라고 생각했습니다.
이를 검사하기 위해 비트 연산을 사용하여 풀려했습니다.
접근법은 2의 제곱수의 특징에서 보았는데, 단 하나의 1과 나머지 0으로 이루어진 이진수가 2의 제곱수이므로 1의 비트수를 세어주어 1개를 넘을 시 2의 제곱수가 아닌 것으로 판단하였습니다.
반응형