문제 풀이
자연수 $n$에 대하여 $n$을 2의 거듭제곱으로 나타낼 수 있다면 이진수로 나타내었을 때 모든 자릿수에서 1이 하나 뿐일 것이다. 이진수는 0과 1로만 구성되어 있으므로 모든 자릿수의 합은 1의 개수가 된다. 따라서 $n$을 이진수로 나타냈을 때 모든 자릿수의 합이 1이면 1, 1이 아니라면 0을 출력한다.
소스 코드
Q = int(input())
ans = []
for _ in range(Q):
input = __import__('sys').stdin.readline
a = int(input())
ans.append(a)
for x in ans:
a = list(bin(x)[2 :])
a = list(map(int, a))
if sum(a) == 1:
print(1)
else:
print(0)
'Koala - 9기 > 기초 알고리즘 스터디' 카테고리의 다른 글
[백준/Python] #15917 노솔브 방지문제야!! (0) | 2023.01.06 |
---|---|
[백준/C++] 2742번: 기찍 N (0) | 2023.01.05 |
[백준/Python] 14579번 덧셈과 곱셈 (0) | 2023.01.05 |
[백준/C] 10797번 (0) | 2023.01.04 |
[백준/Python] 20540번 연길이의 이상형 (0) | 2023.01.04 |