[문제]
1. 문제 설명
자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.
2. 제한사항
- n은 1 이상 100,000,000 이하인 자연수입니다.
3. 입출력 예
n | result |
45 | 7 |
125 | 229 |
4. 입출력 예 설명
입출력 예 #1
- 답을 도출하는 과정은 다음과 같습니다.
n (10진법) | n (3진법) | 앞뒤 반전(3진법) | 10진법으로 표현 |
45 | 1200 | 0021 | 7 |
- 따라서 7을 return 해야 합니다.
입출력 예 #2
- 답을 도출하는 과정은 다음과 같습니다.
n (10진법) | n (3진법) | 앞뒤 반전(3진법) | 10진법으로 표현 |
125 | 11122 | 22111 | 229 |
- 따라서 229를 return 해야 합니다.
[나의 풀이]
import math
def solution(n):
answer = 0
namoji = []
while n!=0:
namoji.append(n % 3)
n = n//3
for i in range(0,len(namoji)):
answer = answer + namoji[len(namoji)-1-i]*int(math.pow(3,i))
return answer
- 3으로 나눴을 때 나머지를 몫이 0일 때까지 구한 뒤 list에 append해준다. --> 10진법을 3진법 상에서 앞뒤로 뒤집은 값을 구할 수 있음
- 그 값을 다시 10진법으로 변경하기 위해 for문을 돌려주며 값을 구한다.
[다른 사람의 풀이]
def solution(n):
ter = []
while n >= 1:
ter.append(n%3)
if n <= 2: return sum(ter)
ter = [ter[i]*3 for i in range(len(ter))]
n = n//3
'알고리즘 > 알고리즘 문제' 카테고리의 다른 글
[python] 프로그래머스 > 문자열 > 문자열 다루기 기본 (0) | 2021.01.03 |
---|---|
[python] 프로그래머스 > 정렬 > H-Index (0) | 2020.10.18 |
[python] 프로그래머스 > 가장 큰 수 (0) | 2020.10.08 |
[python] 프로그래머스 > 해시 > 완주하지 못한 선수 (0) | 2020.10.04 |
[python] 프로그래머스 > 동적계획법(DP) > 정수삼각형 (0) | 2020.09.13 |