문제
문제 설명
자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.
입력 & 출력
입출력 예
nresult
45 | 7 |
125 | 229 |
새로 사용한 함수
int(str, base)
진법 변환을 위하여 사용되는 함수입니다. str에는 변경할 문자열을 넣고 base에는 해당 문자열이 몇 진수의 숫자를 나타내는 지를 넣어주면 됩니다.
위 식에서 표현한 것과 같이 str으로 넣어주는 것이 포인트 입니다.
풀이 과정
1. 2 8 16진법 같은 숫자는 파이썬에서 지원하는 진법 변환 함수가 있기 때문에 그것을 사용하면서 결괏값의 처음 자리와 두 번째 자리를 슬라이싱 해서 사용하면 되지만 3진법은 지원해주는 함수가 없기 때문에 이 내용을 커스텀합니다.
2. divmod() 함수를 이용하여 몫과 나머지를 구하게 되고 이를 result값에 하나하나 붙여주게 됩니다. 이렇게 하면 3진법을 역순으로 만드는 값으로 출력하게 되는데 문제에서 역순으로 된 값을 10진법으로 바꾸는 것을 목표로 하였기 때문에 이것을 역순으로 바꾸는 로직없이 이 숫자를 10진법으로 변환하면 됩니다.
3. 3진법을 10진법으로 변환할 때는 int()에서 제공하는 int(str, base) 함수를 이용하여 변경하고 이 값을 answer값으로 리턴해주면 됩니다.
코드
def solution(n):
result = ''
answer = 0
while n > 0:
n, mod = divmod(n, 3)
result += str(mod)
answer = int(result, 3)
return answer
'Algorithm' 카테고리의 다른 글
[프로그래머스] 정수 제곱근 판별 (0) | 2022.08.09 |
---|---|
[프로그래머스] 코딩테스트 연습완전탐색 최소직사각형 (0) | 2022.08.08 |
[프로그래머스] 코딩테스트 연습Summer/Winter Coding(~2018) 소수 만들기 (0) | 2022.08.06 |
8-5[코딩테스트] 알고리즘 연습 (0) | 2022.08.05 |
[프로그래머스] 코딩테스트 연습2017 팁스타운 예상 대진표 (0) | 2022.08.05 |