프로그래머스 3진법 뒤집기
문제
자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.
import math
def solution(n):
answer = 0
str_num=""
while n>0:
str_num += str(n % 3)
n = n//3
str_len = len(str_num)-1
for i in range(str_len,-1,-1):
answer += int(math.pow(3,str_len-i)) * int(str_num[i])
return answer
먼저 앞뒤반전 3진법 문자형으로 만들고 그다음 10진법 변환할때 반복문으로 일일이 다 곱하고 더하면서 계산을 했다.
다 풀고나서 알고보니 int형 변환 메소드 int()에서 해당 문자를 3진법으로 변환해주는 기능이 있었다!!
-------------더 좋은 풀이 ------------------------
def solution(n):
answer = 0
str_num=""
while n>0:
str_num += str(n % 3)
n = n//3
answer = int(str_num,3)
return answer
int(문자열,n진법) => 10진법으로 변환
예를들어 3진법 0021을 10진법으로 변환 하려할때 int(문자열n진법) 몰랐을땐 일일이 반복문을 통해서 제곱하고 더하고 했는데 int() 메소드에 저런 신기한 기능이 있었다!!
int("0021",3) 하면 해당 문자 "0021"을 3진법 계산으로 10진법으로 변환 시켜준다.
자바도 마찬가지로Integer.parseInt( "문자열", 진법) 하면 10진법으로 변환 시켜준다!