A Developing Developer

DAY 43. 진수 변환 본문

내일배움캠프 4기/TIL

DAY 43. 진수 변환

H-JJOO 2023. 1. 12. 21:13
  • 오늘 한거

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