[BOJ] 3460 이진수

[BOJ] 3460 이진수

문제 링크

이 문제는 어렵지 않게 풀이했다. bin()함수를 이용하면 이진수로 변환할 수 있다는 것을 알고 있었고, 이를 통해서 이진수 변환을 진행했고, 0b가 따로 표시되어 list에 집어넣으면서 del로 제거해주었다. 멀티 제거가 될텐데… 구글링 없이 푸는 것이 목표이기에 아는데로 우선 풀이했다.

테스트케이스와 결과가 다르게 나오자 의아했는데, 알고보니 이진수를 셀 때 오른쪽부터 세는 것처럼 index도 오른쪽 기준으로 헤아려야 했다. 그래서 reverse()함수를 떠올렸고, 이는 리스트에만 적용가능하다. list를 뒤집어주고 인덱스를 우측에서 헤아리는 것처럼 구현하였다.

나의 풀이

T = int(input())

for _ in range(T):
  N = int(input())
  array = []

  for i in bin(N):
    array.append(i)

  del array[0]
  del array[0]

  array.reverse()

  for i in range(len(array)):
    if array[i] == '1':
      if(i == len(array)-1):
        print(i)
      else:
        print(i, end=" ")

© 2021. All rights reserved.