문제
문제 해석
주어진 숫자를 2^n으로 딱 떨어지게 표현할 수 있으면 1, 아니면 0을 출력해야 하는 문제이다.
문제 풀이
숫자를 2의 거듭제곱인지 아닌지 판별하는 가장 쉬운 방법은, 십진수인 정수를 이진수로 변환하여 생각하는 것이다.
이진수로 변환했을 때, 전체 자리 중 1이 가장 첫 번째 자리에 한 번만 등장하는 경우에 2의 거듭제곱이라는 점을 이용하였다.
전체 코드
input = __import__('sys').stdin.readline # 빠른 입력
for i in range(int(input())):
norm = 0 # 2의 거듭제곱 판별 가능 여부 기준 : 1일 때만 True
num = bin(int(input()))
for idx in num:
if idx == "1":
norm += 1
print(1 if norm == 1 else 0)
'Koala - 9기 > 기초 알고리즘 스터디' 카테고리의 다른 글
[백준/Python] 20540번 연길이의 이상형 (0) | 2023.01.06 |
---|---|
[백준/python] 5361번 전투 드로이드 가격 (0) | 2023.01.06 |
[백준/C++] 2742번: 기찍 N (0) | 2023.01.05 |
[백준/Python] #15917 노솔브 방지문제야!! (0) | 2023.01.05 |
[백준/Python] 14579번 덧셈과 곱셈 (0) | 2023.01.05 |