[프로그래머스] Lv.1 3진법 뒤집기 (JavaScript)

혜린·2022년 3월 6일
0
post-thumbnail

🔐 문제

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

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

  • Example

    • 입출력 예 #1

    • 입출력 예 #2

🔑 풀이

function solution(n) {
    let tmp = [];
    let answer = 0;
    
    while(parseInt(n / 3) >= 1) {
        tmp.push(n % 3);
        n = parseInt(n / 3);
    }
    tmp.push(n);
    tmp.reverse();

    for(let i = 0; i < tmp.length; i++) {
        answer += tmp[i] * (3 ** i);
    }
    return answer;
}

⭐POINT : 3진법 변환

  • 해당 숫자가 더이상 나누어질 수 없을 때까지 3으로 나누며, 그 나머지들을 저장해주면 된다.
  • 예제와 같이 n이 45일 때, 3진법으로 변환하면 1200이 된다.

📍 풀이과정

    let tmp = [];
    let answer = 0;
  • 자연수 n을 3으로 나누었을의 나머지를 저장하기 위해 tmp 선언
  • 3진법을 다시 10진법으로 표현한 수를 더해주기 위해 answer 선언

    while(parseInt(n / 3) >= 1) {
        tmp.push(n % 3);
        n = parseInt(n / 3);
    }
  • n을 3으로 계속 나누어주며 그 나머지를 tmp에 저장
  • n의 값은 n/3한 값으로 계속 바꾸어주어야 한다 (⭐POINT : 3진법 변환 참고)

    tmp.push(n);
    tmp.reverse();
  • n이 0이 아닌 1이될 때까지만 반복문을 진행했으므로 마지막에 1을 더해주어야함
  • 1200이 아닌 0021 순으로 저장이 되었기 때문에 1200순으로 바꿔주기

    for(let i = 0; i < tmp.length; i++) {
        answer += tmp[i] * (3 ** i);
    }
  • 자연수 n을 3진법으로 바꾼 값을 다시 10진법으로 바꿔주기


💡 배운점

3진법 변환, 10진법 변환하는 원리를 정확히 알 수 있었다.

profile
FE Developer

0개의 댓글