알고리즘 연습/구현, 문자열

[🥉3 / 백준 15917 / 파이썬] 노솔브 방지문제야!!

김세진 2021. 7. 29. 03:42
반응형

 

 

15917번: 노솔브 방지문제야!!

어떤 수 a가 2의 거듭제곱꼴로 나타내어진다고 해 봅시다. 그렇다면, a = 2n (단 n ≥ 0인 정수) 를 만족할 겁니다. 보통, 각 비트별로 검사를 하면서, 켜져 있는 비트의 개수를 알아내는 것도 좋은

www.acmicpc.net

문제

여러분은 Q개의 쿼리를 수행해야 합니다. 수행해야 하는 쿼리는 다음과 같습니다.

어떤 수 a를 2의 거듭제곱 꼴로 나타낼 수 있는가?

입력

첫 줄에 Q가 주어집니다. (1 ≤ Q ≤ 106)

두 번째 줄부터 Q+1번째 줄까지 a가 주어집니다. a는 1이상 231-1이하 자연수입니다.

출력

각 쿼리마다, 답이 Yes이면 1을, 그렇지 않으면 0을 출력합니다.

 

예제 입력 

10
1
2
7
4
14
32
33
34
35
36

예제 출력 

1
1
0
1
0
1
0
0
0
0

 

풀이

 

입력받은 수를 2의 거듭제곱 꼴로 나타낼수 있는지 판별하는 문제이다.

 

a가 1 이상 2^32 미만의 수로, 2의 거듭제곱을 32개만 구하면 된다.

 

거듭제곱 리스트를 만들어서 입력받은 수가 리스트 안에 있으면 1, 아니면 0을 출력하는 방식으로 코드를 작성했다.

 

import sys
input = sys.stdin.readline

a = [2**i for i in range(32)]

for i in range(int(input())):
    print(1 if int(input()) in a else 0)
반응형