본문 바로가기
Algorithm/Baekjoon

백준 11005번

by minhi 2025. 1. 9.

백준 11005번을 풀어보았다.

 

2745번이 N진법 수를 10진법 수로 변환하는 유형이었다면,

 

11005번은 10진법 수를 N진법 수로 변환하는 유형이다.

 

각각을 변환하는 과정을 수학적으로 나타내면 다음과 같다.

 

 

 

11005번은 크게 두 가지 풀이로 정리할 수 있다.

  • 수학적 풀이
  • toString 메소드

 

1. 수학적 풀이

 

아래 두 풀이의 근본적인 접근은 동일하다.

 

다만 1-2번은 수학적 풀이를 그대로 표현하고 1-1번은 수학적 풀이를 조금 풀어서 표현하였다.

 

1-1.

let [N, B] = require('fs').readFileSync('/dev/stdin').toString().split(' ').map(Number)

let exponent = 0

while (N >= B ** exponent) {
  exponent++
}

let number = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'

let output = ''

for (let i = exponent - 1; i >= 0; i--) {
  output += number[Math.floor(N/(B**i))]
  N -= (B ** i) * Math.floor(N/(B**i))
}

console.log(output)

 

1-2.

let [N, B] = require('fs').readFileSync('/dev/stdin').toString().split(' ').map(Number)

let number = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'

let output = ''

while (N > 0) {
  let remainder = N % B
  let quotient = Math.floor(N/B)

  output += number[remainder]

  N = quotient
}

console.log(output.split('').reverse().join(''))

 

 

2. toString 메소드

let [N, B] = require('fs').readFileSync('/dev/stdin').toString().split(' ').map(Number)

let output = N.toString(B).toUpperCase()

console.log(output)

 

toString 메소드는 숫자를 문자열로 변환하는 기능뿐만 아니라 10진법을 n진법으로 변환하는 기능을 수행하며

 

이 중 진법 변환 기능을 사용하여 문제를 해결할 수 있다.

 

 

💫 이 문제를 통해 배운 것

toString 메소드는 10진법을 n진법으로 변환할 수 있다.

'Algorithm > Baekjoon' 카테고리의 다른 글

백준 2903번  (1) 2025.01.09
진법 관련 유형  (0) 2025.01.09
백준 2745번  (0) 2025.01.02
백준 2563번  (2) 2025.01.02
백준 10798번  (0) 2025.01.01