프로그래머스 3진법 뒤집기 문제를 풀이한 후 메서드를 활용한 진법변환이 눈에 띄어 더 알아보았다!
내가 시도한 방법
function solution(n) {
let convertedNum = [];
while(n > 0) {
convertedNum.push(n % 3);
n = Math.trunc(n / 3);
}
let answer = 0;
for(let i = 0; i < convertedNum.length; i++) {
answer += convertedNum[i] * (3 ** (convertedNum.length - i - 1));
}
return answer;
}
변환해야 하는 수를 3으로 나눠가며 몫과 나머지로 3진수 수를 구하고, 뒤집는 과정 없이 인덱스를 이용해 다시 10진수로 바꿔주었다.
Number.toString()으로 진법 변환하기 (10진수 -> n진수)
Number.toString()에 2~36 사이의 정수를 인자로 넘겨주면 그 수를 n진법으로 표현한 수를 String으로 반환한다.
예를들어 위 문제와같이 3진수로 변환하고 싶은 경우 (변환할 수).toString(3)과 같이 사용하면 된다.
매개변수 없이 사용하는 경우 10진수로 표현한 String을 반환한다.
즉, 1) Number를 String으로 변환해야할 때 2) 10진수를 다른 진법으로 표현된 수로 변환해야할 때 사용할 수 있다.
parseInt()로 진법 변환하기 (n진수 -> 10진수)
parseInt는 String을 Number로 변환하는 메서드다.
이때 parseInt(str, radix)의 형태로 두가지 인자를 넘겨주면 str의 진수를 설정하여 변환할 수 있다.
예를들어 2진수 "1010"을 10진수로 변환하고 싶다면, parseInt("1010", 2)와 같이 사용하면 된다.
메서드에게 변환할 수는 n진수야! 라고 알려주는 것이다.
즉, 1) String을 Number로 변환할 때, 2) n진수를 10진수로 변환해야할 때 사용할 수 있다.
메서드를 활용해 풀이하기
function solution(n) {
return parseInt(n.toString(3).split("").reverse().join(""), 3);
}
문제 내용 그대로
1) 매개변수로 주어진 n을 3진수로 변환한뒤
2) 문자 순서를 뒤집어
3) 다시 10진수로 변환해주면 된다!
참고자료
MDN Number.prototype.toString()
'JavaScript' 카테고리의 다른 글
[Javascript] 시간 간격을 두고 함수 호출하기 (setTimeout / setInterval) (0) | 2024.06.19 |
---|---|
[Javascript/jQuery] 사용자 입력 비활성화하기 (text / button) (0) | 2024.06.18 |
[jQuery] 동적 생성한 태그에 attribute 추가하기 (0) | 2024.06.14 |
Javascript 실행 시간 측정하기 (0) | 2024.06.13 |
Javascript란? (JS와 프레임워크/라이브러리 알아보기) (0) | 2024.06.12 |