문제 설명
자연수n이 매개변수로 주어집니다.n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.
제한사항
- n은 1 이상 100,000,000 이하인 자연수입니다.
function solution(n) {
const trinary = n.toString(3);
const triReverse = trinary.split("").reverse().join("");
return parseInt(triReverse, 3);
}
toString(3)을 이용하여 10진수를 3진수로 변환하고reverse()를 이용하여 앞뒤 반전시키고parseInt()를 이용하여 다시 10진수로 변환한다. const solution = (n) => {
return parseInt([...n.toString(3)].reverse().join(""), 3);
}
위 코드는 spread syntax를 사용하여 훨씬 짧게 작성되었다. 이렇게 작성하면 코드의 길이도 줄일 수 있고 가독성도 높일 수 있어 나도 이렇게 생각할 수 있도록... 많은 문제를 풀어봐야겠다.
toString()
toString() 은 문자열을 반환하는 object의 대표적인 방법이지만 기수(radix)를 매개변수로 취할 시에는 10진수를 다른 진수로 변환할 수 있다. let baseTenInt = 10;
// 10진수 → 2진수
console.log(baseTenInt.toString(2)); // "1010"
// 10진수 → 3진수
console.log(baseTenInt.toString(3)); // "101"
// 10진수 → n진수
console.log(decimal.toString(n));
console.log(typeof baseTenInt.toString(2)); // "string"
parseInt(string, radix)
string: 파싱할 값. 문자열이 아닌 경우 ToString 추상 연산을 사용해 문자열로 변환한다. 문자열의 선행 공백은 무시한다. radix (Optional): string의 진수를 나타내는 2부터 36까지의 정수. Number 자료형이 아닌 경우 Number로 변환된다.parseInt의 매개변수에는 Number, String 모두 가능하다. // 2진수 → 10진수
let binary = 1011
console.log(parseInt(binary,'2')); // 11
// 3진수 → 10진수
let trinary = "210"
console.log(parseInt(trinary,'3')); // 21
// n진수 → 10진수
console.log(parseInt(parameter, n))
// 모두 15를 반환한다.
parseInt('0xF', 16)
parseInt('F', 16)
parseInt('17', 8)
parseInt(021, 8)
parseInt('015', 10) // parseInt('015', 8)이었다면 13을 반환
parseInt(15.99, 10)
parseInt('15,123', 10)
parseInt('FXX123', 16)
parseInt('1111', 2)
parseInt('15 * 3', 10)
parseInt('15e2', 10)
parseInt('15px', 10)
parseInt('12', 13)
parseInt(string, n).toString(n)
// 2진수 -> 3진수
console.log(parseInt("101101", 2).toString(3));// "1200"