자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.
n | result |
---|---|
45 | 7 |
125 | 229 |
입출력 설명
n | 3진법 변환 | 3진법 뒤집기 | result |
---|---|---|---|
45 | 1200 | 0021 | 7 |
125 | 11122 | 22111 | 229 |
첫번째 풀이는 3진법으로 변환할때 수동적으로 변환하였다.
function solution(n) {
//tri에 3진법으로 변환시키기 위해 변수를 만들었으며 3진법은 string형으로 표현한다.
let tri = "";
//3으로 나눌때 0이상일때만 반복문을 돌려서
while( n / 3 > 0){
//3에다가 3으로 나눈 나머지들을 담는다.
tri += n % 3;
//이미 이 값은 순서대로 쌓이기 때문에 뒤집은 형태로 쌓인다.
//n을 3으로 다시 나누어 감소되도록 한다.(while문이 0이하일 경우 멈추기 위해)
n = parseInt(n / 3);
}
//result의 값에 parseInt 를 사용하여 3진법을 10진법으로 바꾼다.
let result = parseInt(tri, 3)
return result;
}
두번째 풀이는 모든 계열을 API를 활용하였다.
function solution(n){
//1. tri라는 변수를 만들어 3진법으로 만들 준비를 한다.
//2. n.toString을 활용하여 매개변수를 3진법으로 변환한다. 이때 string으로 반환받는다.
//3. 반환받은 string 타입을 split을 활용하여 ''을 구분으로 array타입으로 전환한다.
//4. 위에서 전환한 이유는 reverse를 사용하여 배열로써 뒤집기 위함이다.
//5. 뒤집은 array를 ''으로 구분되어 있는 각 index들을 하나로 합친다.
let tri = n.toString(3).split('').reverse().join('');
//6. result 변수 만들고 tri라는 3진법 뒤집힌 값을 10진법으로 변환한다.
let result = parseInt(tri, 3);
//7. result return한다.
return result;
}
toString( ) 진수로 전환하기.
toString( )은 정수를 문자열로 변환시킨다. 이때 괄호안에 숫자형태를 넣으면 그 숫자의 진법으로 문자열을 return 한다.
let 아무숫자 = 450; let 이진법 = 아무숫자.toString(2); let 삼진법 = 아무숫자.toString(3); . . . . console.log(이진법) // 111000010, type : string console.log(삼진법) //121200 . . .