[백준] 11005: 진법 변환2 - python[파이썬] (업그레이드(?)

다인·2024년 8월 13일

백준

목록 보기
31/112
post-thumbnail

전 글과 마찬가지로 백준을 파이썬으로 어느정도 풀어본 뒤 다시 풀어본 문제이당. 구글링해서 찾은 코드가 내가 쓴 것보다 더 깔끔해서 정리해본다.

10진법 -> 2진법

전에 그린 그림이 너무 발이고.. 이게 더 이해하기 편해서 다시 그려보았다. 이 원리를 가지고 문제를 풀어보자.
핵심은
1. 0이 될 때까지 계속 나누기
2. 나머지를 거꾸로 만들기

1. 내 코드

alphabet = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
N, B = map(int, input().split())
num = []

while N > 0:
    num.append(N % B)
    N = N // B

for i in num[::-1]:
    print(alphabet[i], end='')

2. 전 코드

N, B = map(int, input().split(" "))
num_list = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
result = ''

while N != 0:
    result += str(num_list[N % B])
    N = N // B

print(result[::-1])

전에 쓴 글

  • 리스트가 아닌 문자열로 했네. '파이썬은 문자열도 +가 되는구나'고 적어놓고... 까마득히 잊고 있었다,,,ㅎㅎ 이젠 잊지 말자
  • 아하 그냥 애초에 바로 인덱스에 찾아서 결과에 넣음으로써 불필요한 접근을 줄였다! 오호 굳굳.
  • 그리고 출력만 반대로 하면 되니까 마지막에 거꾸로 출력했구낭

결과

아이디어는 똑같은데 성능 차이가 꽤 나는군,, 항상 불필요한 접근을 줄이는 방법을 고민해보쟈

0개의 댓글