알고리즘 연습/구현, 문자열
[🥉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을 출력합니다.
예제 입력101 2 7 4 14 32 33 34 35 36 |
예제 출력11 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)
반응형