문제 설명
자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.
제한 사항
- n은 1 이상 100,000,000 이하인 자연수입니다.
입출력 예
n | result |
45 | 7 |
125 | 229 |
힌트
더보기
진법 변환에 대한 문제이다.
혹시나 N진법의 표현법에 대해 잘 모른다면 이것에 대해 먼저 알아볼 필요가 있다.
보편적으로 주어진 숫자 n을 N으로 계속 나누면서 거꾸로 읽어 들이는 방법으로 진법을 변환한다.
이를 다시 10진법으로 변환하는 방법은 int 함수를 사용하면 손쉽게 처리할 수 있다.
풀이
더보기
문제에서 시키는대로 하면 되지만 진법 변환을 많이 해보지 않았다면 조금 헷갈릴 수도 있다.
먼저 10진법을 3진법으로 바꾸기 위해 주어진 자연수 n을 3으로 계속 나눈 후 나머지를 거꾸로 읽어나가면 된다.
def solution(n):
# 3으로 나눈 나머지를 저장하는 리스트
save = []
while n:
# 변환한 3진수를 문자열로 나타낼 것이기 때문에
# str 형태로 삽입
save.append(str(n % 3))
n //= 3
# 거꾸로 읽어들인다
# -> 이를 다시 앞뒤로 뒤집기 때문에 뒤집을 필요가 없다.
base_3 = ''.join(save)
# 3진수인 base_3을 10진수로 변환
answer = int(base_3, 3)
return answer
'알고리즘 > Programmers' 카테고리의 다른 글
[Programmers] 쿼드압축 후 개수 세기 (월간 코드 챌린지 시즌1 - Level2, Python3) (0) | 2021.06.10 |
---|---|
[Programmers] 이진 변환 반복하기 (월간 코드 챌린지 시즌1 - Level2, Python3) (0) | 2021.06.10 |
[Programmers] 삼각 달팽이 (월간 코드 챌린지 시즌1 - Level2, Python3) (0) | 2021.06.10 |
[Programmers] 두 개 뽑아서 더하기 (월간 코드 챌린지 시즌1 - Level1, Python3) (0) | 2021.06.10 |
[Programmers] 내적 (월간 코드 챌린지 시즌1 - Level1, Python3) (0) | 2021.06.10 |