이 전의 문제에서는 조금 생각도 하면서 고생했었는데 이번에는 전의 문제와 다르게 반대로 숫자를 진법으로 변환하는 문제이다.
이 문제는 생각보다 굉장히 간단하겠다 싶었다.
단순히 나누기를 반복하며 몫과 몫을 나누어 해당 진법의 단어로 표현해주기만 하면 되는 문제이기 때문.
숫자가 얼마나 클지 모르기 때문에 확정된 반복횟수를 정하는 것은 무리가 있다고 판단하여 while문을 활용하였다.
word = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
n, b = map(int, input().split())
y = 0
result = []
while n >= y :
y = n % b
n = n // b
result.append(word[y])
result = result[::-1]
for i in range(len(result)):
print(result[i],end="")
vscode에서 이대로 작성하여 돌렸을 때는 알맞은 답이 나왔고 아무 문제없었는데
백준사이트에서 제출을 해보니 정답이 아니라고 뜬다... 이유는 모르겠으나 구글링해서 다른 사람들의 코드를 살펴보았다.
어쩌면 while문이 아니라 For문을 사용하여 풀 수 있는 문제인 것인가? 싶었다.
N, B = map(int, input().split())
s = ''
arr = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
while N:
s += str(arr[N%B])
N //= B
print(s[::-1])
이 코드는 정상적으로 정답이라고 표기해주었다.
내 코드와 다른점을 확인해보자면 나는 리스트로 받았던 것을 이어붙여 출력하기 위해 for문을 사용했다는점.
이 코드는 애초에 문자열 변수를 생성하여 문자열로써 바로 입력받아 마지막에 출력때 반대로만 출력했다는 점 정도일까?
아마 내생각이지만 코드가 수행하는 작업이 for문이 들어간 만큼 더 많아져서 오답이라고 했을지도 모르겠다.
'Algorithm > Baekjoon' 카테고리의 다른 글
[백준 문제풀이 : 5086번] 파이썬 - 배수와 약수 (0) | 2023.09.05 |
---|---|
[백준 문제풀이 : 2720번] 파이썬 - 세탁소 시장 동혁 (0) | 2023.08.30 |
[백준 문제풀이 : 2941번] 파이썬 - 크로아티아 알파벳 (0) | 2023.08.16 |
[백준 문제풀이 : 10988번] 파이썬 - 펠린드롬인지 확인하기 (0) | 2023.08.14 |
[백준 문제풀이 : 5622번] 파이썬 - 다이얼 (0) | 2023.08.11 |