반응형
[ 문제 ]
B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오.
10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 사용한다.
A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35
[ 코드 ]
using System.Numerics;
string[] s = Console.ReadLine().Split();
string N = s[0];
int B = int.Parse(s[1]);
BigInteger result = ConvertToDecimal(N, B);
Console.WriteLine(result);
static BigInteger ConvertToDecimal(string N, int B)
{
BigInteger decimalValue = 0;
for (int i = 0; i < N.Length; i++)
{
char currentChar = N[i];
BigInteger digit;
// 현재 문자가 숫자인 경우
if (char.IsDigit(currentChar))
{
digit = currentChar - '0';
}
// 현재 문자가 알파벳인 경우
else
{
digit = char.ToUpper(currentChar) - 'A' + 10;
}
// 현재 자릿수의 값을 10진법 결과에 누적
decimalValue = decimalValue * B + digit;
}
return decimalValue;
}
[ 실행화면 ]
[ 해석 ]
32번째 줄 누적해서 진수변환하는 공식. 둘이 같은 값을 출력한다. 알아두면 좋을 듯 싶다.
1. 진법 변환할때 제일 많이 썼던거
2. 앞 자릿수 값 * 진법변환할 수 + 내 값 ... 이걸 누적해서 구하는거
문제링크: https://www.acmicpc.net/problem/2745
반응형
'Language > C#' 카테고리의 다른 글
[C#] 백준 15873번 공백 없는 A+B (0) | 2024.01.27 |
---|---|
[C#] 백준 16170번 오늘의 날짜는? (UTC+0 시간대 써보기) (2) | 2024.01.24 |
[C#] 백준 1316번 그룹 단어 체커 (0) | 2024.01.22 |
[C#] 백준 2941번 크로아티아 알파벳 (0) | 2024.01.21 |
[C#] 백준 2444번 별찍기 - 7 (다이아몬드 별찍기) (0) | 2024.01.20 |