본문 바로가기
JS/백준

[백준JS] 11005. 진법 변환 2

by 박기린 2023. 4. 4.

안녕하세요. 박기린 입니다.

백준 11005번 진법 변환 2 문제를 풀어봅시다.

 

 

문제 링크

https://www.acmicpc.net/problem/11005

 

 

 


문제 해석

10진수 숫자 n을 b진수로 바꾸는 방법은 위의 계산 방식을 사용하면 됩니다.

1. n을 b으로 나눈 후, [몫과 나머지]를 구합니다.
2. 나머지는 오른쪽에 두고, 몫을 계속 n으로 나눕니다.
3. 나눗셈을 반복해서 남은 몫이 n보다 작아지면, 남은 몫과 나머지들을 순서대로 적어줍니다.
(몫부터 차례대로 적기 - 가장 맨 처음에 나온 나머지 값이 맨 뒤에 위치해야 합니다.)

10 이상 35 이하의 값의 경우, A부터 Z까지 영어를 이용해서 표기하면 됩니다.

 

 

 


정답 코드

const fs = require("fs");
let [n, b] = fs.readFileSync("/dev/stdin").toString().trim().split(" ");
let result = [];

n = +n;
b = +b;

while (n >= b) {
  let remainder = n % b;
  let quotient = Math.trunc(n / b);

  if (remainder >= 10) {
    result.push(String.fromCharCode(remainder + 55));
  } else {
    result.push(remainder);
  }

  n = quotient;
}

if (n >= 10) {
  result.push(String.fromCharCode(n + 55));
} else {
  result.push(n);
}

console.log(result.reverse().join(""));

 

 

 


정답 코드 풀이

const fs = require("fs");
let [n, b] = fs.readFileSync("/dev/stdin").toString().trim().split(" ");
let result = [];

n = +n;
b = +b;

fs 모듈로 입력을 받아오고, 입력으로부터 n과 b를 각각 변수로 저장합니다. n과 b는 +연산자를 이용해서 number로 타입 변환을 합니다.

 

result Array에는,

- n을 b로 나눈 후에 발생하는 나머지와

- 최종으로 남겨질 몫이 저장됩니다.

 

 

 

 

while (n >= b) {
  let remainder = n % b;
  let quotient = Math.trunc(n / b);

  if (remainder >= 10) {
    result.push(String.fromCharCode(remainder + 55));
  } else {
    result.push(remainder);
  }

  n = quotient;
}

while 문을 이용해서 n이 b보다 작아질 때까지 나눗셈을 실행하도록 합니다.

변수 remainder : 나머지 부분이 저장됩니다.

변수 quotient : 부분이 저장됩니다.

 

if문을 이용해서,

나머지가 10 이상이면, String.fromCharCode(remainder + 55)를 이용해서, 영어 대문자로 변환하여 result Array에 push() 하도록 합니다.

나머지가 1 ~ 9 이면, 숫자 그대로 result Array에 push()합니다.

 

그리고 마지막으로, n에 quotient를 재설정합니다.

 

 

 

 

if (n >= 10) {
  result.push(String.fromCharCode(n + 55));
} else {
  result.push(n);
}

if 문을 이용해서, 최종으로 남은 몫을 result Array에 push()합니다.

몫도 10보다 클 경우 영어 대문자로, 아니면 숫자 그대로 push 합니다.

 

 

 

console.log(result.reverse().join(""));

result를 출력하기 직전에, 꼭 reverse()를 해야 합니다. 

 

위 사진의 화살표 순으로 적혀야 되기 때문입니다.

 

반응형

'JS > 백준' 카테고리의 다른 글

[백준JS] 1735. 분수 합  (0) 2023.04.16
[백준JS] 2903. 중앙 이동 알고리즘  (0) 2023.04.10
[백준JS] 2745. 진법 변환  (0) 2023.04.01
[백준JS] 2563. 색종이  (0) 2023.03.31
[백준JS] 1316. 그룹 단어 체커  (0) 2023.03.24