CodingSpace

프로그래머스#51(Lv.1)_3진법 뒤집기 본문

프로그래머스/Level1

프로그래머스#51(Lv.1)_3진법 뒤집기

개발자_조이킴 2021. 11. 4. 19:15

3진법 뒤집기

다른 분들이 하신것 보고 배우고 또 배우자! (toString 메소드!)

 

※ toString() 메서드

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Number/toString

 

Number.prototype.toString() - JavaScript | MDN

toString() 메서드는 특정한 Number 객체를 나타내는 문자열을 반환합니다.

developer.mozilla.org

 

toString() 메소드는 특정 진수로 객체를 표현한 문자열을 만들 수 있다!!!

 

toString() 메서드를 이용한 2진법 표현

 

예시) (254).toString(15) // '11e'

→ 15*15 + 15 + 14

→ 여기서 14는 9 + 5 (a, b, c, d, e)이므로 'e'로 표현됨!

 

포기하지말고 계속해서 공부하자!

화이팅:)

 

입출력 예시

 

// 프로그래머스 - 3진법 뒤집기

function solution(n) {
    
    // 3진법 n을 3으로 나눌 때, 나머지를 담을 배열
    let arrRemainder = []
    
    // n이 3미만이 되면 while문 종료
    while(n >= 3) {
        
        let remainder = n % 3
        arrRemainder.unshift(remainder)
        
        // n을 3으로 나눈 몫으로 갱신
        n = Math.floor(n / 3)
        
    }
    
    // 45 => arr = [2, 0, 0], num = 1 => arr.unshift(num) = [1, 2, 0, 0]
    arrRemainder.unshift(n)
    
    // 기존 3진법 수 뒤집기: 1200 => 0021
    arrRemainder.reverse()
    
    // 10진법 수 담아줄 decimal
    let decimal = 0
    
    // 뒤집은 3진법 수, 10진법 만들기
    for(let i = 0; i < arrRemainder.length; i++) {   
        if(arrRemainder[i] !== 0) {
            let exponent = arrRemainder.length - i - 1
            decimal = decimal + (arrRemainder[i] * Math.pow(3, exponent))
        }
    }    
    
    return decimal
}

 

<다른분의 solution>

 

 

 

Comments