📝 문제 요약
> 자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.
https://programmers.co.kr/learn/courses/30/lessons/68935
코딩테스트 연습 - 3진법 뒤집기
자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요. 제한사항 n은 1 이상 100,000,000 이하인 자연수
programmers.co.kr
3진법 = 0,1,2로만 표현되는 세상이다. 우리가 평소에 사용하는 건 10진수다.
🎨 풀이
💡 첫번째 시도 = 성공(은 아니지만 다른 코드가 기억이 안난다 ㅠㅠ)
def solution(n):
reverse_word = ''
num = 0
while n > 0:
n, mod = divmod(n, 3)
reverse_word += str(mod)
return int(reverse_word,3)
> divmod는 몫과 나머지를 한번에 구해주는 함수다.
n, mod = divmod(n,3)은 n을 3으로 나눈후 몫을 n에 나머지를 mod에 넣어주는 코드다.
그 후 mod에 저장된 나머지를 하나씩 추가해주면 while문이 끝났을 때는 '앞뒤 반전된 3진법 숫자'가 된다.
(밑에 그림을 보면 이해가 쉽다)
그 후, 10진법으로 다시 바꿔줘야하니 int 함수를 쓴다. int 함수는 base 기본값이 10진수다. 이 코드에서는 3진수를 10진수로 바꿔줘야하기 때문에 base 자리에 3을 적어주었다. 그렇게 해주고 리턴하면 끝난다~
int(string, base)
* divmod 관련 참고사항
무조건 divmod를 사용하는 게 좋은 방법은 아닙니다.
가독성이나, 팀의 코드 스타일에 따라서, a//b, a%b와 같이 쓸 때가 더 좋을 수도 있습니다.
또한, divmod는 작은 숫자를 다룰 때는 a//b, a%b 보다 느립니다. 대신, 큰 숫자를 다룰 때는 전자가 후자보다 더 빠르지요.
- 프로그래머스 파이썬을 파이썬답게 -
출처 : https://programmers.co.kr/learn/courses/4008/lessons/12732

끝~
⭐ 느낀점
> divmod라는게 있었다는 걸 이 문제 풀면서 알게되었다. 몫과 나머지를 한 번에 저장할 수 있는 함수가 있다니,, 너무 신기했다. 사용할 일이 있을 때 종종 써먹어야겠다는 생각이 든다. int() 함수도 이번에 좀 제대로 배운 것 같다. 항상 10진수에서 n진수로 변환해주는건지 n진수에서 10진수로 변환해주는건지 헷갈렸는데 제대로 알게되었다! 배운게 많았던 문제다.
'🎲 알고리즘 공부 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 / Level 1] 두 개 뽑아서 더하기 (파이썬) (0) | 2022.04.11 |
---|---|
[프로그래머스 / Level 1] 예산 (파이썬) (0) | 2022.04.10 |
[프로그래머스 / Level 1] 약수의 개수와 덧셈 (파이썬) (0) | 2022.04.08 |
[프로그래머스 / Level 1] 폰켓몬 (파이썬) (0) | 2022.04.07 |
[프로그래머스 / Level 1] 체육복 (파이썬) (0) | 2022.04.06 |