본문 바로가기
Study/JavaScript

[Javascript] 10진수를 x진수로 변환하기(직접구현)

by dev_kong 2022. 1. 4.
728x90
728x90

https://kong-dev.tistory.com/111?category=982997 

 

[Javascript] 3진법 뒤집기

문제설명 자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요. 제한사항 n은 1 이상 100,000,000 이하

kong-dev.tistory.com

 

이 문제 풀다가,

어 이거 직접 구현은 어떻게 하는 걸까 싶어서 구글링을 해봤는데

전부다 메서드랑 내장 함수만 알려주고 직접 구현한건 하나도 없다.

왠지 할 수 있을거 같아서 해봤는데 잘 된다.

 

이 글에선 진법변환 하는 메서드랑 내장함수는 안다룰 거다.

지천에 널린게 그건데 굳이 나까지...

 

아 그리고 10진수를 x진수로 변환 하는 거 밖에 안짰다.

x 진수를 10진수로 변환하는건 아직 안해봤다.

코드가 짜지는 대로 업데이트 할 예정.

 

 

일단 16진수 까지는 잘 통과가 됐는데 그 이상은 모르겠다 쓸일도 없지 않을까 싶다.

function solution2(num, x) {

  //빈배열
  const arr = [];
  
  //num 이 0이 되면 while문 탈출
  while (num > 0) {
  
    //num을 x로 나눈 나머지가 10보다 작으면 그대로 배열에 넣어준다.
    if (num % x < 10) {
      arr.push(num % x);
      
      //나머지가 10보다 크면 아스키 코드를 문자로 변환해주는
      //String.fromCharCode 사용해서 배열에 push
      //아스키코드에서 A는 65이고, 알파벳 순서대로 1씩 커진다.
    } else {
      arr.push(String.fromCharCode(65 + ((num % x) - 10)));
    }
    // if문에서 빠져나오면 num을 x로 나눈 몫으로 재할당해준다.
    num = Math.floor(num / x);
  }
  //배열에 들어와있는 값들을 뒤집고 합쳐준 뒤 리턴
  return arr.reverse().join('');
}

console.log(solution2(45, 16)); // 2D
console.log(solution2(45, 3)); //1200
console.log(solution2(2312341234, 16)); //89D386F2

1N 진수에서 10 이상의 수는 알파벳으로 변환된다는 점 때문에 고민을 잠시 했었는데,

아스키코드에서 땡겨오면 되겠다는 생각이 들었다.

그리고 구글링을 해보니 아스키코드를 문자로 변환해주는 메서드가 있다.

진짜 없는게 없다...

메서드는 약간 동네 만물상 같달까.

 

재밌었다.

 

 

 

728x90
728x90

'Study > JavaScript' 카테고리의 다른 글

소수판별하기  (0) 2021.12.14
call, apply, bind 삼총사  (0) 2021.12.05
내 애착 메소드 Array.from 으로 표 만들기  (0) 2021.12.03
Number() 와 parseFloat() 그리고 킹받는 8진법  (0) 2021.11.29
프로토타입의 교체.  (0) 2021.11.29

댓글