프로그래머스 문제 풀이 3진법 뒤집기 (JS)

devmomo·2021년 3월 6일
0

알고리즘

목록 보기
4/52
post-thumbnail

문제분석

자연수 n이 매개변수로 주어지면, n을 3진법 상에서 앞뒤로 뒤집은 후
이를 다시 10진법으로 표현한 수를 return하는 함수 만들기

제한조건

n은 1이상 100,000,000이하인 자연수

문제풀이

1단계 : n을 3진법으로 표현한다
2단계 : 3진법으로 표현한 수를 뒤집는다
3단계 : 뒤집어진 수를 다시 10진법으로 표현한다
// 재귀함수 풀이
let result="";
function solution(n) {
let temp = parseInt(n/3,10);
if(temp<=2){
 result = result +  String(parseInt(n%3,10)) + temp;
   if(parseInt(result,10)===10){
    return 1;
   }
 result = result.split('').map((data,index)=>parseInt((data),10)*Math.pow(3,result.length-index- 1)).reduce((a,b)=>a+=b);
 return result; 
  }
result = result + String(parseInt(n%3,10));
return solution(temp);    
}

다른 사람 풀이

* Spread Operator를 문자열에 적용하면 배열로 리턴가능
* parseInt()는 문자열을 숫자로, toString()은 숫자를 문자열의 형태로 변환 (진수 설정 가능)
const solution = (n) => {
    return parseInt([...n.toString(3)].reverse().join(""), 3);
}
profile
FE engineer

0개의 댓글