3진법 뒤집기

yejin·2022년 1월 21일
0

javascript 알고리즘

목록 보기
20/20

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

문제 설명

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

제한사항

n은 1 이상 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 해야 합니다.

내 풀이

function solution(n) {
  //10진법을 3진법으로 바꾸기
    var three = n.toString(3);
  //
    var rever = String(three).split('').reverse();
    var ten = Number(rever);
    // // 2, 8, 16 진법 -> 10진법으로 변환
    // var answer=Number.parseInt(rever, 3);    // 10
    
    
    return rever;
}

console.log(solution(45))

결과
rever까지는 [ '0', '0', '2', '1' ]로 잘 되는데,
Number(rever)해주니까 NaN로 결과값이 나옴.
praseInt해주면 0으로 결과값이 나옴.

당연함 "0021"상태에서 Number해준게 아니라 배열안에 숫자가 있는 상태에서 Number을 해줬으니까!

최종 풀이

function solution(n) {
    //10진수를 3진수로 바꾸기
    var three = n.toString(3);

    var rever = String(three).split('').reverse().join('')
    var ten = Number(rever);
    
    //3진수를 10진수로 바꾸기
    var answer=Number.parseInt(rever, 3);
    
    
    return answer;
}

다른 풀이

function solution(n) {
    return parseInt(n.toString(3).split('').reverse().join(''), 3);
}
profile
♪(๑ᴖ◡ᴖ๑)♪ 기회는 도전에서부터 시작되는 것

0개의 댓글