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

Changyun Go·2021년 12월 4일
0

프로그래머스 Level 1

목록 보기
16/19
post-thumbnail

3진법 뒤집기

문제 설명


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

제한 사항


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

나의 풀이


function solution(n) {
    let answer = 0;
    let rev = n.toString(3).split('').reverse().join('');
    answer = parseInt(rev, 3);
    
    return answer;
}

다른 사람의 풀이


function solution(n) {
    const answer = [];
    while(n !== 0) {
        answer.unshift(n % 3);
        n = Math.floor(n/3);
    }
    return answer.reduce((acc,v,i) => acc + (v * Math.pow(3, i)),0);   
}

P.S.

✍️ 나는 내장 함수를 이용해서 어렵지 않게 문제를 풀 수 있었지만, 다른 분이 작성한 코드 중에 진법 변환을 내장 함수를 사용하지 않고 구현한 코드가 있었다😃
  1. 몫이 0이 될 때까지, 반복문에 주어진 n를 3으로 나누고 그 나머지 값을 answer 배열에 넣어주면 3진수로 변환된다. → unshift 메소드를 이용하기 때문에 값은 반대 방향으로 누적된다.
  2. 각 자릿수만큼 세제곱한 값을 곱해서 더해주면 다시 10진수로 변환된다.

내장 함수를 사용하는 게 잘못은 아니지만 메소드에 의존하지 않고 다양한 방식으로 문제를 풀어내는 것도 필요한 능력이 아닐까 싶다🤓 모든 기능을 메소드로 구현할 수 없고 메소드도 시간이 흐르면서 쓰이지 않는 것도 발생하기 때문이다.

기초 수학의 중요성을 느낀다🥲

0개의 댓글