반응형
문제풀이
1. n을 3진수로 변환한다.
2. 1의 결과를 뒤집는다.
3. 2의 결과를 다시 10진수로 변환한다.
n=10을 예로 들면, 10을 3진수로 변환한 1의 결과는 101이다. 이를 뒤집은 2의 결과는 101이다. 이를 다시 10진수로 변환한 3의 결과는 1*3^2 + 0*3^1 + 1* 3^0 = 10 이다. (예시의 n과 최종 답이 같은 것은 우연이다.)
Python Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
def solution(n):
return r_convert(convert(n,3)[::-1],3)
# 10진수인 n을 base진수로 변환
def convert(n, base):
T = "0123456789ABCDEF"
q, r = divmod(n, base) # n을 base로 나눈 몫과 나머지를 튜플형태로 반환
if q == 0:
return T[r]
else:
return convert(q, base) + T[r]
# base진수인 n을 10진수로 변환
def r_convert(n, base):
l = len(n)
ans = 0
for i, v in enumerate(n):
ans += int(n[i])*pow(base,l-i-1)
print(ans)
return ans
|
cs |
Line 2 : str[::-1]을 통해 convert(v,3)의 결과를 뒤집어 준다.
문제 링크
코딩테스트 연습 - 3진법 뒤집기
자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요. 제한사항 n은 1 이상 100,000,000 이하인 자연수
programmers.co.kr
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 ] 예산 Python (0) | 2021.04.29 |
---|---|
[프로그래머스] 신규 아이디 추천 - Python (0) | 2021.04.03 |
프로그래머스 불량 사용자 (0) | 2020.12.03 |
프로그래머스 캐시 (0) | 2020.12.01 |
프로그래머스 튜플 (0) | 2020.11.30 |