▶ 문제 설명
자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.
▶ 제한사항
- n은 1 이상 100,000,000 이하인 자연수입니다.
▶ 입출력 예
n result
45 | 7 |
125 | 229 |
▶ 내가 짠 코드
def solution(n):
answer = ''
while n > 0:
n, mod = divmod(n,3)
answer += str(mod)
return int(answer, 3)
십진법으로 변환하는 과정에서 굳이 뒤집을 필요가 없으므로 그대로 사용한다.
처음에는 나머지를 이어붙인 문자열을 for문을 돌려서 10의 제곱수를 곱해주려고 했는데
int(x,base) 를 사용하면 간단하게 해결할 수 있었다.
base 진법의 str 형식의 수를 10진법으로 변환해주기 때문에 굳이 뒤집거나 할 필요가 없다.
▶ 참고사항
- divmod() : 몫과 나머지를 같이 구할 수 있다. 주의할 점은 작은 숫자를 다룰 때는 몫과 나머지를 각각 구하는 것보다 느리다는 것. 큰 숫자를 구할 때는 훨씬 빠르다. 코드 스타일에 따라 정해서 쓰는 것이 좋다.
728x90
'자료구조 & 알고리즘 & cs > CodingTest' 카테고리의 다른 글
프로그래머스 LEVEL1 - 두 개 뽑아서 더하기 (0) | 2022.06.16 |
---|---|
프로그래머스 LEVEL1 - 예산 (0) | 2022.06.15 |
프로그래머스 LEVEL1 - 약수의 개수와 덧셈 (0) | 2022.06.14 |
프로그래머스 LEVEL1 - 실패율 (0) | 2022.06.14 |
프로그래머스 LEVEL1 - 폰켓몬 (0) | 2022.06.13 |