반응형
문제
여러분은 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)
반응형
'알고리즘 연습 > 구현, 문자열' 카테고리의 다른 글
[🥈5 / 백준 1476 / 파이썬] 날짜 계산 (0) | 2021.07.30 |
---|---|
[🥈5 / 백준 1475 / 파이썬] 방 번호 (0) | 2021.07.30 |
[🥉1 / 백준 9093 / 파이썬] 단어 뒤집기 (0) | 2021.07.24 |
[🥉1 / 백준 11719 / 파이썬] 그대로 출력하기 2 (0) | 2021.07.23 |
[🥉1 / 백준 2145 / 파이썬] 숫자 놀이 (0) | 2021.07.21 |