새소식

Study/Algorithm

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

  • -

 

문제 설명

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

 


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

 

입출력 예
n result
45 7
125 229

 

입출력 예 설명

입출력 예 #1

  • 답을 도출하는 과정은 다음과 같습니다.
n (10진법) n (3진법) 앞뒤 반전 (3진법) 10진법 result
45 1200 0021 7
  • 따라서 7을 return 해야 합니다.

입출력 예 #2

  • 답을 도출하는 과정은 다음과 같습니다.
n (10진법) n (3진법) 앞뒤 반전 (3진법) 10진법 result
125 11122 22111 229
  • 따라서 229를 return 해야 합니다.

 

이 문제는 아주 간단하게 풀 수 있습니당

toString을 쓰면요! n.toString(3) n.toString(10)만 하면 바로 3진법 10진법으로 바꿀 수 있어요

하지만 toString을 안쓰고 하면 어떻게 하는지도 알아야겠죠

 

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

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);
}

function solution(n, numbers = []) {
  while (n) numbers.push(n % 3), (n = parseInt(n / 3))
  return numbers.reduce((A, B, C, $) => A + B * Math.pow(3, $.length - C - 1), 0)
}

toString을 쓰면 처음 코드처럼 쓰면 되고

2, 3번째 코드는 좀 더 공부를... 

Contents

포스팅 주소를 복사했습니다.

이 글이 도움이 되었다면 공감 부탁드립니다.