반응형
문제 설명
자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.
-
n은 1 이상 100,000,000 이하인 자연수입니다.
출처 : programmers.co.kr/learn/courses/30/lessons/68935
풀이 방법
10진수인 45를 3진수로 변환하면 위의 그림과 같이 45를 3으로 나누어 지지 않을 때까지 나누어 준다. 그러면 빨간색 화살표 순서로 읽어주면 3진수 변환이 되는데, 문제에서는 앞뒤 반전을 하라고 했다. 입력된 수를 3으로 나누어 준 나머지를 문자열 뒤에 바로 연결하게 되면 자연스럽게 바로 앞뒤 반전을 적용할 수 있다.
그렇게 만들어진 3진수인 0021을 10진법 변환 공식을 통해 결과를 반환하면 된다.
소스 코드
1
2
3
4
5
6
7
8
9
10
|
def solution(n):
answer = 0
reverse_ternary = ''
while n > 0:
reverse_ternary += str(n % 3)
n = int(n / 3)
for i in range(len(reverse_ternary)):
answer += int(reverse_ternary[i]) * (3**(len(reverse_ternary)-i-1))
return answer
|
cs |
반응형
'프로그래머스 공부 > Python' 카테고리의 다른 글
[Level 1 / Python] 비밀지도(2018 KAKAO BLIND RECRUITMENT) (2) | 2020.11.12 |
---|---|
[Level 1 / Python] 실패율(2019 KAKAO BLIND RECRUITMENT) (1) | 2020.11.11 |
[Level 1 / Python] 크레인 인형뽑기 게임(2019 카카오 개발자 겨울 인턴십) (1) | 2020.11.08 |
[Level 1 / Python] 두 개 뽑아서 더하기(월간 코드 챌린지 시즌1) (0) | 2020.11.08 |
[Level 1 / Python] 내적(월간 코드 챌린지 시즌1) (1) | 2020.11.07 |