문제 : https://programmers.co.kr/learn/courses/30/lessons/68935
function solution(num) {
const bin = [...num.toString(3)].reverse().join(''); // 0021
return parseInt(bin, 3); // 7
}
방법1 - toString , split를 이용
function solution(n) {
return parseInt(n.toString(3).split('').reverse().join(''), 3);
}
방법2 - 진법을 직접하는 법
function solution(n) {
const answer = []; // [1,2,0,0]
while (n) {
answer.unshift(n % 3);
n = Math.floor(n / 3);
}
return answer.reduce((acc, cur, i) => acc + cur * Math.pow(3, i), 0); // 1+6+0+0
}
: 숫자를 radix에 해당하는 "진수로 바꾸어" 문자열로 나타냄.
const num = 9;
console.log(num.toString(3)); // 100 <- 9를 3진수로 바꾼 결과를 문자열로 반환.
: 문자열을 radix에 해당하는 "진수로 읽어서", 10진법인 숫자형으로 바꿈.
parseInt("10", 2);
// 2 - 파라미터 "10"을 2진법으로 읽어서, 10진법으로 변환한 값을 리턴함.
parseInt("0021", 3);
// 7 - 파라미터 "0021"을 3진법으로 읽어서, 10진법으로 변환한 값을 리턴하였습니다.
: 문자를 구분자로 나눠 배열로 반환
// 예제1
const elements = 'abcd';
console.log(elements.split()); // ["abcd"]
// separator가 생략되었을 경우 배열은 원본 문자열을 유일한 원소로 가집니다.
console.log(elements.split('')); // ["a","b","c","d"]
// separator가 빈 문자열일 경우 string은 모든 문자를 배열의 원소 하나씩으로 변환됩니다.
// 예제2
const el = 'ab-cd-ef';
console.log(el.split('-')); // ["ab","cd","ef"]
: 배열의 모든 요소를 연결해 하나의 문자열로
const elements = ['a', 'b', 'c'];
console.log(elements.join()); // 구분자 생략하면 배열의 요소들이 쉼표로 구분됩니다.
//a,b,c
console.log(elements.join('')); //구분자가 빈 문자열이면 모든 요소들이 사이에 아무 문자도 없이 연결됩니다.
// abc
console.log(elements.join('-')); // 배열의 각 요소를 구분할 문자열을 지정합니다.
// a-b-c