[프로그래머스] 3진법 뒤집기

Rae-eun Yang·2022년 7월 27일
0

프로그래머스

목록 보기
18/83

문제 풀이


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


제한 사항


  • n1 이상 100,000,000 이하인 자연수입니다.

입출력 예

nresult
457
125229

입출력 예 설명

입출력 예 #1

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

n (10진법)n (3진법)앞뒤 반전(3진법)10진법으로 표현
45120000217
  • 따라서 7을 return 해야 합니다.

입출력 예 #2

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

n (10진법)n (3진법)앞뒤 반전(3진법)10진법으로 표현
1251112222111229
  • 따라서 229를 return 해야 합니다.

풀이 코드 (JavaScript)

function to3Reverse(n) {
    let result = '';
    
    while(n > 0) {
        result += n % 3;
        n = Math.floor(n / 3);
    }
    
    return result;
}

function to10(n) {
    n += '';
    
    let result = 0;
    for(let i = 0; i < n.length; i++) {
        result += +n.charAt(n.length - i - 1) * (3 ** i);
    }
    
    return result;
}


function solution(n) {
    var answer = to10(to3Reverse(n));
    
    return answer;
}

진법 변환 문제는 항상 진법 -> 진법해주는 함수들을 정의해서 푸는 편

문제에서 편했던 점은 3진법 변환 시 reverse를 안해도 된다는 점이다!

  • string.split('').reverse().join() : JavaScript에서 문자열을 reverse해주는 방법

  • JavaScript는 나누기 연산을 할 때 소수까지 나오므로 꼭 Math.floor()를 해주어야 하겠다


profile
개발자 지망생의 벨로그

0개의 댓글