최대 1 분 소요

사용 언어: Python3

문제

이진수

풀이

내 풀이

def process():
    N = int(input())
    binary = []
    while N >= 2:
        binary.append(N % 2)
        N //= 2
    binary.append(N)
    print(" ".join(map(str, [idx for idx, val in enumerate(binary) if val == 1])))

T = int(input())
for _ in range(T):
    process()
  • 테스트 케이스: 통과
  • 제출 결과
    스크린샷 2023-06-13 오전 11 22 15

다른 풀이

def process():
    N = int(input())
    print(" ".join([str(idx) for idx, val in enumerate(bin(N)[:1:-1]) if val == '1'])) # ✅ if val == 1(숫자) 아님 주의 -> "문자"여야 한다

T = int(input())
for _ in range(T):
    process()
  • 파이썬 내장함수인 bin()을 사용해 간단하게 이진수를 구할 수 있다.
  • 슬라이싱을 이용해 원하는 부분을 역순으로 추출했다.
    • 역순 슬라이싱은 헷갈리는 부분이 있어서 🌟이 글을 작성했다!
  • " ".join([str(idx) for idx, val in enumerate(bin(N)[:1:-1]) if val == '1'])
    • " ".join(map(str, [idx for idx, val in enumerate(bin(N)[:1:-1]) if val == '1'])) 코드도 똑같이 동작한다.


💛 개인 공부 기록용 블로그입니다. 👻

맨 위로 이동하기