Programmers/Level 1
[프로그래머스 / JavaScript] - 3진법 뒤집기
LaKinRad
2022. 9. 19. 18:29
출처/프로그래머스
● 문제 설명
자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.
● 제한 사항
- n은 1 이상 100,000,000 이하인 자연수입니다.
● 입출력 예
n | result |
45 | 7 |
125 | 229 |
나의 풀이
function solution(n) {
return parseInt(n.toString(3).split('').reverse().join(''), 3);
}
function solution(n) {
var ternaryArr = [];
var result;
const ternary = function(n){
if(n < 3){
ternaryArr.push(n);
return;
}
ternaryArr.push(n % 3);
n = Math.floor(n / 3);
ternary(n);
}
ternary(n);
result = ternaryArr.reverse().reduce(function(acc, v, i){
acc += v * Math.pow(3, i);
return acc;
}, 0);
return result;
}
이번 문제는 총 두 개의 코드를 짰다.
첫 번째 코드는 많이 알려져 있는 toString 함수와 parseInt 함수를 이용한 진수 변환 처리 방법을 사용하였고,
두 번째 코드는 재귀 함수와 reduce 함수를 이용하여 풀어보았다.
함수에 파라미터를 추가하여, 3 대신 다른 숫자 인수를 받으면 3진법을 제외한 나머지 진법들도 활용할 수 있을 것 같다.