MyPrograming
프로그래머스-파이썬 (3진법 뒤집기) 본문
반응형
Q. 자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.
<제한사항>
- n은 1 이상 100,000,000 이하인 자연수입니다.
<입출력 예시>
n | result |
45 | 7 |
125 | 229 |
<입출력 예시 설명>
입출력 예시 #1
n (10진법) | n (3진법) | 앞뒤 반전 (3진법) | 10진법 표현 |
45 | 1200 | 0021 | 7 |
입출력 예시 #2
n (10진법) | n (3진법) | 앞뒤 반전 (3진법) | 10진법 표현 |
125 | 11122 | 22111 | 229 |
<내 풀이>
def solution(n):
answer = 0
ternary = ''
while(n >=1):
rest = n % 3
n //= 3
ternary = str(rest)+ternary
for i in range(len(ternary)):
answer += (3**i)*int(ternary[i])
return answer
입력물 n을 3진법으로 변환하고 다시 10진법으로 변환하는 밑의 반복문에서, ternary 앞 순서의 인덱스부터 접근하기
때문에, 뒤집은 것과 같은 결과를 얻을 수 있다.
다른 풀이
def solution(n):
answer = 0
ternary = ''
while(n >=1):
rest = n % 3
n = n//3
ternary += str(rest)
answer = int(ternary, 3)
return answer
3진법으로 변환한 결과를 뒤집어서 ternary에 담았을 때, 그 결과를 다시 10진법으로 변환하기 위한 간단한 방법이 있다.
answer = int(ternary, 3)
- int(n, y) : 'y' 진법으로 표현된 'n'을 10진법으로 변환해준다.
반응형
'Python > 알고리즘' 카테고리의 다른 글
프로그래머스-파이썬 (전화번호 목록) (0) | 2021.06.23 |
---|---|
프로그래머스-파이썬 (기능개발) (0) | 2021.06.22 |
프로그래머스-파이썬 ([1차] 비밀지도) (0) | 2021.02.04 |
프로그래머스-파이썬 (실패율) (0) | 2021.01.31 |
프로그래머스-파이썬 (문자열 내 마음대로 정렬하기) (0) | 2021.01.27 |