🔎 문제
B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오.
10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 사용한다.
A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35
⌨️ 입력
첫째 줄에 N과 B가 주어진다. (2 ≤ B ≤ 36)
B진법 수 N을 10진법으로 바꾸면, 항상 10억보다 작거나 같다.
💻 출력
첫째 줄에 B진법 수 N을 10진법으로 출력한다.
1. C++
#include <iostream>
#include <string>
using namespace std;
int charToNum(char c)
{
if ('0' <= c && c <= '9')
{
return c - '0';
}
else
{
return c - 'A' + 10;
}
}
long long stringToNum(string s, int n)
{
long long result = 0;
for (char c : s)
{
result *= n;
result += charToNum(c);
}
return result;
}
int main()
{
string binaryString;
int n;
cin >> binaryString >> n;
long long result = stringToNum(binaryString, n);
cout << result;
}
<stoi 함수를 이용한 방법>
#include <iostream>
#include <string>
using namespace std;
int main()
{
string binaryString;
int n;
cin >> binaryString >> n;
int result = stoi(binaryString, nullptr, n);
cout << result;
}
2. Python
string, n = input().split()
n = int(n)
decimal_number = int(string, n)
print(decimal_number)
3. Java
import java.util.Scanner;
public class Bronze2745 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String string = scanner.next();
int n = scanner.nextInt();
int result = Integer.parseInt(string, n);
System.out.println(result);
scanner.close();
}
}
4. Javascript
const readline = require("readline");
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
})
let string;
let n;
rl.on('line', (input) => {
[string, n] = input.split(" ");
n = parseInt(n);
var result = parseInt(string, n);
console.log(result);
rl.close()
})
5. Kotlin
fun main() {
val (string, n_string) = readLine()!!.split(" ")
val n = n_string.toInt()
val result = string.toInt(n)
println(result)
}
'백준' 카테고리의 다른 글
[백준] 실버 II : 2630번 색종이 만들기 (0) | 2025.02.05 |
---|---|
[백준] 실버Ⅳ: 1065번 (0) | 2024.08.30 |
[백준] 실버Ⅴ : 2563번 (0) | 2024.03.31 |
[백준] 브론즈Ⅰ : 10798번 (1) | 2024.03.31 |
[백준] 브론즈Ⅲ : 2566번 (0) | 2024.03.31 |