
이번 문제는 B진법 수 N을 입력받아 10진수로 변환해 출력하는 문제이다.
10진법을 넘어가는 진법에서는 알파벳 대문자를 사용하며, 각 문자는 10 이상의 값을 의미한다.
입력받은 문자열의 각 인덱스에 접근해 해당 문자가 숫자인지 알파벳인지 판단한 뒤, 각 자릿값에 맞는 진법 계산을 통해 결과를 출력하도록 구현했다.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp3
{
internal class math1
{
static void Main(string[] args)
{
//백준 2745 진법 변환
string[] input = Console.ReadLine().Split();
string N = input[0];
int B = int.Parse(input[1]);
int result = 0;
for(int i = 0; i < N.Length; i++)
{
char c = N[i];
int value;
if (char.IsDigit(c)) //문자가 숫자인지 확인(문자가 '0' ~ '9' 범위인지 확인)
value = c - '0'; // 문자를 숫자로 변환 (예: '3' -> 3) ->
// 문자 간의 아스키 코드 차이를 이용해 숫자로 변환
else
value = c - 'A' + 10; // 문자 -> 숫자 변환 (예: 'A' -> 10, 'Z' -> 35)
// 각 자리의 값 × (B진법의 거듭제곱)으로 10진수로 변환
// (왼쪽부터 B^(자리수-1-i) 를 곱해 누적)
result += value * (int)Math.Pow(B, N.Length - 1 - i);
}
Console.WriteLine(result);
}
}
}

진법에 대한 이해와 거듭제곱 연산을 활용할 수 있다면 비교적 쉽게 풀 수 있는 문제였다.
'코딩 테스트 > 백준' 카테고리의 다른 글
| 백준 - [단계별로 풀어보기 수학1] 2720 세탁소 사장 동혁 (0) | 2026.03.22 |
|---|---|
| 백준 - [단계별로 풀어보기 수학1] 11005 진법 변환2 (0) | 2026.03.21 |
| 백준 - [단계별로 풀어보기 2차원 배열] 2563 색종이 (0) | 2026.03.19 |
| 백준 - [단계별로 풀어보기 2차원 배열] 10798 세로읽기 (0) | 2026.03.19 |
| 백준 - [단계별로 풀어보기 2차원 배열] 2566 최댓값 (0) | 2026.03.19 |