[python] 백준 3406

wonk·2022년 5월 14일
0
post-thumbnail

백준 3406 - 이진수

문제

양의 정수 n이 주어졌을 때, 이를 이진수로 나타냈을 때 1의 위치를 모두 찾는 프로그램을 작성하시오. 최하위 비트(least significant bit, lsb)의 위치는 0이다.

나의 풀이

T= int(input())
for _ in range(T):

  n = int(input())
  bin = []
  while n>0:
    bin.append(0 if n%2==0 else 1)
    n = n//2

  for j in range(len(bin)):
    if bin[j] == 1 :
      print(j,end=' ') 

다른 풀이

 = int(input())
for _ in range(T):

  n = int(input())
  bin = []
  cnt = 0 
  while n>0:
    if n%2==1:
      print(cnt,end=' ') 
    cnt += 1 
    n = n//2

다른풀이(bin)

for _ in range(int(input())):
    n = int(input())
    b = bin(n)[2:]
    for i in range(len(b)):
        if b[::-1][i] == '1':
            print(i, end=' ')

복기
bin(이진법 함수) 을 안쓰고 풀어봤다.
처음에 이진법으로 변환하고 1을 출력했는데
for 을 한번 더 써야하니 비효율적임

profile
코테 풀이

0개의 댓글