haju__log
[python][백준/BOJ] 3460번 : 이진수 본문
https://www.acmicpc.net/problem/3460
3460번: 이진수
양의 정수 n이 주어졌을 때, 이를 이진수로 나타냈을 때 1의 위치를 모두 찾는 프로그램을 작성하시오. 최하위 비트(least significant bit, lsb)의 위치는 0이다.
www.acmicpc.net
✅ 문제 풀이
- 13을 2진수로 바꾸면 1101(2) 이다.
- 출력할 때 위치가 낮은 것부터 출력하라고 했으므로, 2의 0제곱 자리인 마지막 숫자 1이 0의 위치라고 보면된다.
- 그래서 0번째, 2번째, 3번째가 답인 것!
- 내가 푼 방식인 while문을 통해 l 리스트에 저장된 값은 2진수로 제대로 바꾼것이 아니나(원래는 l.reverse()를 해주어야 우리가 원하는 이진수의 값이 제대로 나옴) 반대로 출력해야하므로 그대로 l을 사용하였다. (여기서 쫌 헷갈림ㅎ)
import sys
t=int(sys.stdin.readline())
for i in range(t):
n=int(sys.stdin.readline())
l=[]
while n!=0:
l.append(n%2)
n//=2
for j in range(len(l)):
if l[j]==1:
print(j,end=' ')