프로그래머스 Lv1. 3진법 뒤집기

용상윤·2021년 3월 27일
0

문제

https://programmers.co.kr/learn/courses/30/lessons/68935


접근

  • 입력받은 변수 n을 3진법으로 return하는 함수를 만든다.
  • 3진법을 10진법으로 변환하는 함수를 만든다.

코드

js

function solution(n) {
    const returnThr = (n) => {
        let ans = [];
        while(n>2){
            ans.push(n%3);
            n = Math.floor(n/3);
        }
        ans.push(n);
        return ans;
    }
    
    const returnTen = (Arr) => {
        let arr = Arr.reverse();
        let sum=0;
        for(let i=0; i<arr.length; i++){
            sum = sum + (Math.pow(3, i))*arr[i];
        }
        return sum;
    }
    
    return returnTen(returnThr(n))
}

python

def solution(n):
    def return_thr(n) :
        ans = []
        while(n>2) :
            ans.append(n%3)
            n = n//3
        ans.append(n)
        return ans #[0,0,2,1]
    
    def return_ten(arr) :
        arr = list(reversed(arr))
        sum = 0
        for i in range(0, len(arr)) :
            sum = sum + (3**i)*arr[i]
        return sum
    
    return return_ten(return_thr(n))

로...풀었지만 고수들의 풀이를 참고하니 몇 가지 새로 배웠다.

js

toString, parseInt로 진법변환이 가능한걸 이제 알았다..

toString

(45).toString(2)
// "101101"

(45).toString(3)
// "1200"

(45).toString(4)
// "231"

(45).toString(1)
(45).toString(37)
// Uncaught RangeError: toString() radix argument must be between 2 and 36

parseInt

parseInt(1200, 3)
// 45

parseInt(1200, 4)
// 96

python

js에서의 parseInt(1200, 3) 형태를 python에서는

int("1200", 3)
# 45

로 표현이 가능하다.

profile
달리는 중!

0개의 댓글