https://programmers.co.kr/learn/courses/30/lessons/68935
코딩테스트 연습 - 3진법 뒤집기
자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요. 제한사항 n은 1 이상 100,000,000 이하인 자연수
programmers.co.kr
풀이 과정
45(10) = 1200(3)
10진수 자연수를 입력받고 뒤집은 3진수로 변환하려면 3보다 작아질때 까지 나눠가면서 나머지를 문자열에 붙이고, 3보다 작아진 몫을 문자열에 또 붙여주면 된다.
이제 그 문자열을 다시 3진법의 자릿수를 고려하면서 10진수로 바꾼 후 출력해주면 된다.
나는 자릿수를 계산하면서 '0021' = 2*(3^1) + 1*(3^0) 이런식으로 해결하였으나 파이썬에서는
int('n진수 문자열', n)으로 n진수 문자열을 10진수 정수로 바꿀수 있다.
ex) int('ABCD', 16) = 43981
int('101010111101', 2) = 2749
소스 코드
def solution(n):
answer = 0
temp_string = ''
while n >= 3:
temp_string += str(n % 3)
n //= 3
temp_string += str(n)
for digit in range(len(temp_string)):
answer += int(temp_string[digit]) * (3 ** (len(temp_string) - (digit + 1)))
return answer
'알고리즘 문제 풀이 > 프로그래머스' 카테고리의 다른 글
프로그래머스 - 두 개 뽑아서 더하기 [파이썬] (0) | 2022.05.26 |
---|---|
프로그래머스 - 예산 [파이썬] (0) | 2022.05.26 |
프로그래머스 - 약수의 개수와 덧셈 [파이썬] (0) | 2022.05.11 |
프로그래머스 - 폰켓몬 [파이썬] (0) | 2022.05.09 |
프로그래머스 - 체육복 [파이썬] [자바스크립트] (0) | 2022.05.08 |