출처/프로그래머스
● 문제 설명
자연수 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진법을 제외한 나머지 진법들도 활용할 수 있을 것 같다.
'Programmers > Level 1' 카테고리의 다른 글
[프로그래머스 / JavaScript] - 약수의 개수와 덧셈 (1) | 2022.09.29 |
---|---|
[프로그래머스 / JavaScript] - 부족한 금액 계산하기 (0) | 2022.09.28 |
[프로그래머스 / JavaScript] - 2016년 (0) | 2022.05.13 |
[프로그래머스 / JavaScript] - 서울에서 김서방 찾기 (2) | 2022.05.12 |
[프로그래머스 / JavaScript] - 시저 암호 (0) | 2022.05.12 |