
오늘의 코드 카타 문제는 '3진법'에 관한 내용이었다.
자바스크립트로 n진법을 어떻게 풀어내지..? 반복문.....? 😕 하고 개큰고민을 하고 있는데
💥 10진수를 n진법으로, 또 n진법으로 표현된 문자열을 10진법으로 바꿔주는 메서드들이 있다는 걸 알게 됐다..! n진법으로 표현된 문자열을 10진법으로 바꿔주는 녀석이 바로parseInt()였는데! 지금껏 단순히 문자열을 정수로 바꿔주는 메서드라고만 생각한 게 미안해진다 😅 너.. 능력이 많은 친구였구나..!
자연수 n이 주어질 때, n을 3진법 상에서 앞뒤로 뒤집은 후 이를 다시 10진법으로 표현하려면?
n을 3진법으로 표현하기n을 뒤집기일단 나는 1번부터 막혔다. 자바스크립트로 어떻게 3진법으로 표현하지?.. 일단 3진법 계산을 어떻게 하더라?.. 하고 3진법부터 구글링을 했다.
하지만 자바스크립트에는 10진수를 n진수로 변환해주는 메서드가 있었다 ...!!
n을 3진법으로 표현하기 - toString()toString()은 숫자를 문자열로 변환하는 메서드다.진법을 받아, 해당 진법으로 숫자를 변환하여 문자열로 반환한다! let number = 255;
console.log(number.toString(2)); // "11111111" (2진법으로 변환)
console.log(number.toString(16)); // "ff" (16진법으로 변환)
console.log(number.toString(8)); // "377" (8진법으로 변환)
n.toString(3) 으로 표현하면 자연수 n이 3진법으로 변환하여 출력되는 것이다 ❗❗3진법으로 표현된
n을 뒤집는 과정은 이번 주제에선 그리 중요한 내용이 아니니 빠르게 지나가겠다.
단순하게n.toString(3).split("").reverse().join()이렇게 처리할 수 있겠다.
parseInt()parseInt()는 문자열을 숫자로 변환하는 함수다.진법을 받으며, 해당 진법으로 문자열을 숫자로 변환한다 ❗❗진법이 변환될 진법이 아니라, 파싱해야 할 진법을 입력해줘야 한다는 거다. let binaryStr = "11111111";
console.log(parseInt(binaryStr, 2)); // 255 (2진법을 10진법으로 변환)
console.log(parseInt(binaryStr, 10))이 아니라 두 번째 인자에 해당 문자열의 진법에 해당하는 2를 입력해줘야 하는 거다!
parseInt()를 단순히Number()메소드와 비교하는 데에만 집중했지 두 번째 인자로 무엇을 받는 지는 크게 신경쓰지 않았던 것 같다.n진법으로 변환할 때는
toString(진수)! n진법인 수를 10진수로 변환해야 할 때는parseInt(숫자, 진수)기억 완료 😎