https://www.acmicpc.net/problem/3460
문제
정수를 이진수로 나타낼때 이진수의 1의 위치들을 순서대로 출력하는 문제이다.
입력
t ( 테스트케이스), 정수 n이주어진다. (1 <= t <= 10) , (1 <= n <= 1000000)
출력
1의 위치를 공백으로 구분하여 한줄에 출력한다.
import sys
length = int(input()) # 테스트 케이스 입력
data = []
for i in range(length):
data.append(int(sys.stdin.readline())) # 데이터 입력받기
for i in range(length): # 테케 길이 만큼 for 문
case = data[i] # 개별 케이스 데이터
moc = case # 몫 변수
cnt = 0 # 위치 변수
for j in range(case): # 정수 데이터 만큼 반복
if moc%2 == 1: # 나머지가 1이면 출력
print(cnt,end=" ")
moc = moc//2 # 몫을 나눈다
if(moc == 0): # 몫이 0이면 끝
break
cnt+=1 # 1의 위치를 다음으로 옮김
'알고리즘' 카테고리의 다른 글
프로그래머스 타겟넘버 (python) (0) | 2022.08.07 |
---|---|
백준 (2460) 지능형 기차 2 (python) (0) | 2022.08.06 |
백준 (10818) 최소, 최대 (python) (0) | 2022.08.05 |
백준 (2501) 약수 구하기 (파이썬) (0) | 2022.08.03 |
백준 (11292)키 큰 사람 (c++) (0) | 2022.08.02 |