[BOJ] 3460 - 이진수 (🥉 브론즈 3티어)
사용 언어: 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()
- 테스트 케이스: 통과
- 제출 결과
다른 풀이
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']))
코드도 똑같이 동작한다.
💛 개인 공부 기록용 블로그입니다. 👻