728x90
728x90
https://kong-dev.tistory.com/111?category=982997
이 문제 풀다가,
어 이거 직접 구현은 어떻게 하는 걸까 싶어서 구글링을 해봤는데
전부다 메서드랑 내장 함수만 알려주고 직접 구현한건 하나도 없다.
왠지 할 수 있을거 같아서 해봤는데 잘 된다.
이 글에선 진법변환 하는 메서드랑 내장함수는 안다룰 거다.
지천에 널린게 그건데 굳이 나까지...
아 그리고 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 |
댓글