반응형
문제를 푸는 시간보다 문제를 이해하는 시간이 더 오래 걸린 문제였다.
예제를 이용해서 문제를 이해해보자
17 8
2
2 16
01 첫 줄
17은 진법 A, 8은 진법 B이다.
02 두번째 줄
입력에 나오는 설명은 A진법으로 나타낸 숫자의 자리수의 개수 m이라고 하는데 무슨 말인지 이해가 안갔다. 그냥 간단하게 변환해야할 숫자의 개수이다.
03 세번째 줄
두번째 줄에서 변화해야할 수의 갯수를 받았으니까 해당 하는 수들이다.
풀이
01 A진법을 10진수로 변환
string[] token = Console.ReadLine().Split();
int a = int.Parse(token[0]);
int b = int.Parse(token[1]);
int m = int.Parse(Console.ReadLine());
int n = m - 1;
int answer = 0;
string[] token2 = Console.ReadLine().Split();
for (int i = 0; i<m; i++)
{
int digit = int.Parse(token2[i]);
answer += (int)Math.Pow(a, n) * digit;
n--;
}
02 10진수를 B진법으로 변환
StringBuilder sb = new StringBuilder();
while(answer != 0)
{
int mod = answer % b;
sb.Insert(0, mod);
sb.Insert(mod.ToString().Length, ' ');
answer /= b;
}
Console.Write(sb.ToString());
코드 전문
using System;
using System.Text;
namespace baek2
{
class Program
{
static void Main(string[] args)
{
string[] token = Console.ReadLine().Split();
int a = int.Parse(token[0]);
int b = int.Parse(token[1]);
int m = int.Parse(Console.ReadLine());
int n = m - 1;
int answer = 0;
string[] token2 = Console.ReadLine().Split();
StringBuilder sb = new StringBuilder();
for (int i = 0; i<m; i++)
{
int digit = int.Parse(token2[i]);
answer += (int)Math.Pow(a, n) * digit;
n--;
}
while(answer != 0)
{
int mod = answer % b;
sb.Insert(0, mod);
sb.Insert(mod.ToString().Length, ' ');
answer /= b;
}
Console.Write(sb.ToString());
}
}
}
반응형
'코딩테스트 준비 > 백준 C#' 카테고리의 다른 글
백준 C# - 1463 +) 풀이 (0) | 2023.11.27 |
---|---|
백준 C# - 11653 (0) | 2023.11.27 |
백준 C# - 17103 +) 풀이 (2) | 2023.11.26 |
백준 C# - 2745 +)풀이 (0) | 2023.11.23 |
백준 C# - 11005 +)풀이 (0) | 2023.11.22 |
댓글