var h = ['프로그래머스', '3진법 뒤집기'];

fbghgus123·2021년 3월 3일
0
post-thumbnail

❓ 문제

코딩테스트 연습 > 월간 코드 챌린지 시즌1 > 3진법 뒤집기

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

👨‍🔧 접근

- 첫 구상

  1. n을 3진수로 변환
  2. 뒤집는다.
  3. 10진수로 다시 변환

하지만 코드를 작성하다 보니깐 다음과 같이 변하였다.
1. 3진수로 변환 후 배열에 추가
2. 10진수로 변환

💻 코드

function solution(n) {
    var answer = 0;
    var i = 0;
    var ternary = [];
    
    while(1){
        if(parseInt(n/Math.pow(3,i))>0) {
            i += 1;
        }
        else {
            i -= 1;  
            break;
        }
    } // 3진수 변환시 자릿수 계산
    
    for(var j=i;j>=0;j--){
        ternary.push(parseInt(n/Math.pow(3,j)));
        n = n % Math.pow(3,j);
    } // 3진수로 변환 후 배열에 추가
    
    for(var j in ternary){
        answer += ternary[j] * Math.pow(3,j);
    } // 10진수로 변환
    return answer;
};

- 다른 사람 풀이

const solution = (n) => {
    return parseInt([...n.toString(3)].reverse().join(""), 3);
}

👨‍🏫 리뷰

  • parseInt()와 toString을 사용하면 진수 변환을 간단하게 할 수 있다.
profile
컴공과 학생 입니다.

0개의 댓글

관련 채용 정보