[프로그래머스] 3진법 뒤집기 [월간 코드 챌린지 시즌1] [python] Level1
문제 설명
자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.
제한사항
- n은 1 이상 100,000,000 이하인 자연수입니다.
구현 및 설계
접근 방식
1. 주어진 수를 3진법 변환
2. 앞뒤 반전(역전시키기)
3. 다시 10진법으로 변환
문제의 지문대로 구현을 하면 풀 수 있는 문제이다!
my_solution
# 1
def convert(n):
T = "012"
q, r = divmod(n, 3)
if q == 0:
return T[r]
else:
return convert(q) + T[r]
def solution(n):
answer = 0
# ①
n = list(map(int, convert(n)));
# ②
for i in range(len(n)):
answer += n[i] * (3 ** i)
return answer
1. convert는 10진수를 3진법으로 변환해주는 함수이다.
①. n을 3진법으로 변환시킨다.(int형 리스트로 만든다)
②. n을 앞의 인덱스값 부터 n[i] * (3 ** i) n[i]에 3의 제곱값을 곱해 answer에 쌓아준다.
그러면 answer에 1. 주어진 수를 3진법 변환
2. 앞뒤 반전(역전시키기)
3. 다시 10진법으로 변환
한 수가 저장되며 answer을 반환하여 문제를 해결할 수 있다!
반응형
'알고리즘 문제풀이 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 땅따먹기 [연습문제] [python] (0) | 2020.10.17 |
---|---|
[프로그래머스] 괄호 변환 [2020 KAKAO BLIND RECRUITMENT] [python] (0) | 2020.10.17 |
[프로그래머스] 쿼드압축 후 개수 세기 [월간 코드 챌린지 시즌1] [python] (0) | 2020.10.14 |
[프로그래머스] [1차] 프렌즈4블록 [2018 KAKAO BLIND RECRUITMENT] [python] (0) | 2020.10.06 |
[프로그래머스] [3차] n진수 게임 [2018 KAKAO BLIND RECRUITMENT] [python] (0) | 2020.10.04 |