A Developing Developer
DAY 43. 진수 변환 본문
- 오늘 한거
day 18 알고리즘, socket.io 실습
- 문제발생
3진법 뒤집기
문제 설명
자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.
제한사항
n은 1 이상 100,000,000 이하인 자연수입니다.
입출력 예
n result
45 7
125 229
입출력 예 설명
입출력 예 #1
답을 도출하는 과정은 다음과 같습니다.
n (10진법) n (3진법) 앞뒤 반전(3진법) 10진법으로 표현
45 1200 0021 7
따라서 7을 return 해야 합니다.
입출력 예 #2
답을 도출하는 과정은 다음과 같습니다.
n (10진법) n (3진법) 앞뒤 반전(3진법) 10진법으로 표현
125 11122 22111 229
따라서 229를 return 해야 합니다.
- 시도
function solution(n) {
let answer = 0;
// let decimal_system = n.toString(10);
let ternary = n.toString(3);
let arry_rev_ternary = [];
let rev_ternary = 0;
console.log(ternary.length);
console.log(ternary);
for (let i = 0; i < ternary.length; i++) {
console.log(ternary[i]);
arry_rev_ternary.push(ternary[ternary.length - 1 - i]);
}
console.log(arry_rev_ternary);
for (let i = 0; i < arry_rev_ternary.length; i++) {
rev_ternary = rev_ternary + arry_rev_ternary[i];
}
console.log(rev_ternary);
answer = parseInt(rev_ternary, 3);
console.log(answer);
return answer;
}
- 해결방안
function solution(n) {
let reversed_N = n.toString(3).split('').reverse().join('')
return parseInt(reversed_N, 3)
}
Number.toString([radix]) : 숫자를 문자열로 변환하여 반환한다. 해당 method의 인자 값으로 radix를 전달하면 숫자를 해당 radix의 값으로 변환한 값을 문자열로 반환한다.
String.split() : 문자열을 분할하여 요소로 전달한 배열을 반환한다. 해당 method의 인자 값을 전달하면 전달 받은 인자 값을 기준으로 문자열을 분할한다.
Array.reverse() : 배열의 요소를 반대로 재배열 한다.
Array.join() : 전달받은 인자 값을 기준을 요소 사이에 반영한 문자열을 반환한다.
parseInt(string, radix) : 전달 받은 문자열을 전달 받은 radix로 분석한 정수를 반환한다. 해당 문자열이 3진법을 나타내고 있어, 3진법으로 분석한 정수를 반환한다고 이해했다.
- 알게 된 것
진수 변환
1. 10진수 => 2,3,N 진수
- 10진수 => 2진수
10진수.toString(2)
- 10진수 => 3진수
10진수.toString(3)
- 10진수 => N진수
10진수.toString(N)
2. 2,3,N진수 => N진수
- parseInt(2진수, 2)
- parseInt(3진수, 3)
- parseInt(N진수, N)
3. N 진수 => N 진수
parseInt(N진수, N).toString(N)
[결론]
알면 편한 메소드로 코드의 줄 수가 말도 안되게 줄어든다.
'내일배움캠프 4기 > TIL' 카테고리의 다른 글
DAY 45. TypeScript 1일차 (0) | 2023.01.16 |
---|---|
DAY 44. (0) | 2023.01.16 |
DAY 42. DataBase(SQL) (0) | 2023.01.11 |
DAY 41. day17 알고리즘 부족한 금액 계산하기 (0) | 2023.01.11 |
DAY 40. Websocket (0) | 2023.01.09 |