[Programmers] 3진법 뒤집기

sunriseGong·2021년 2월 13일
0

나의 풀이

// [Programmers] 3진법 뒤집기
function solution(n) {
    
    // 1. n을 3진법으로 변환 (메소드 특성상 문자열로 반환됨)
    // toString 메소드는 숫자열을 문자열로 바꿀 수도 있지만
    // 인자로 radix(2~36)를 전달하면 진수를 변환하는 기능도 있습니다.
    let one = n.toString(3)
    console.log('1',one) 
    
    // 2. 변환한 문자열을 배열로 만들기 
    // reverse 메소드로 반전을 하기 위한 사전작업
    let two = one.split('')
    console.log('2',two)
    
    // 3. 배열 순서 반전하기
    let three = two.reverse()
    console.log('3',three)
    
    // 4. 다시 하나의 문자열로 붙이기
    // join() 메서드는 배열의 모든 요소를 연결해 하나의 문자열로 만듭니다.
    // 인자로는 빈 문자열('')을 넣어야지 쉼표없이 요소들을 연결합니다.
    let four = three.join('')
    console.log('4', four)
    
    // 5. 3진법 -> 10진법
    // parseInt(string, n) -> string 을 n진법으로 읽고 10진법으로 해석해줍니다.
    // n은 2부터 36까지 입력가능하고 입력하지 않으면 10으로 처리합니다.
    return parseInt(four, 3)
}

문제설명

자연수 n이 매개변수로 주어집니다.
n을 3진법 상에서 앞뒤로 뒤집은 후,
이를 다시 10진법으로 표현한 수를 return 하도록
solution 함수를 완성해주세요.

제한사항

n은 1 이상 100,000,000 이하인 자연수입니다.


입출력 예시

n	result
45	7
125	229

입출력 예 설명

입출력 예 #1

답을 도출하는 과정은 다음과 같습니다.

n (10진법) = 45
n (3진법) = 1200
앞뒤 반전(3진법) = 0021
10진법으로 표현 = 7

따라서 7을 return 해야 합니다.

입출력 예 #2

답을 도출하는 과정은 다음과 같습니다.

n (10진법) = 125
n (3진법) = 11122
앞뒤 반전(3진법) = 22111
10진법으로 표현 = 229

따라서 229를 return 해야 합니다.

profile
심심해야 공부하게 된다.

0개의 댓글