[Lv.1]3진법 뒤집기
문제 : https://programmers.co.kr/learn/courses/30/lessons/68935
🔶내가 한 방법
- Number.tostring() 을 통해 인자를 3진법으로 바꾼 후
- 그 결과를 배열에 담아, 그 배열을 뒤집음, 이후 각 요소를 문자열로 합체함.
- parseInt를 이용해, 그 문자열을 10진법인 숫자로 바꾸어 리턴함.
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
}
🔶피드백
* Number.toString(raidx) ← 진법 전환 할 수 있음.
: 숫자를 radix에 해당하는 진수로 바꾸어 문자열로 나타냄.
const num = 9;
console.log(num.toString(3)); // 100 <- 9를 3진수로 바꾼 결과를 문자열로 반환.
* Number.parseInt(string, radix)
: 문자열을 radix에 해당하는 진수로 읽어서, 10진법인 숫자형으로 바꿈.
parseInt("10", 2);
// 2 - 파라미터 "10"을 2진법으로 읽어서, 10진법으로 변환한 값을 리턴함.
parseInt("0021", 3);
// 7 - 파라미터 "0021"을 3진법으로 읽어서, 10진법으로 변환한 값을 리턴하였습니다.
* String.split(separator)
: 문자를 구분자로 나눠 배열로 반환
// 예제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"]
* join
: 배열의 모든 요소를 연결해 하나의 문자열로
const elements = ['a', 'b', 'c'];
console.log(elements.join()); // 구분자 생략하면 배열의 요소들이 쉼표로 구분됩니다.
//a,b,c
console.log(elements.join('')); //구분자가 빈 문자열이면 모든 요소들이 사이에 아무 문자도 없이 연결됩니다.
// abc
console.log(elements.join('-')); // 배열의 각 요소를 구분할 문자열을 지정합니다.
// a-b-c
Author And Source
이 문제에 관하여([Lv.1]3진법 뒤집기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jhplus13/Lv.13진법-뒤집기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)