반응형
풀이
나머지가 9보다 큰 경우와 작은경우를 나누어서 풀면 된다.
01 나머지가 9보다 경우
ASCII값을 사용하여 나머지를 해당 문자로 변환한다.
if(n % b > 9)
{
char a = (char)((n % b) + 55);
sb.Insert(0,a);
}
02 나머지가 9보다 작은 경우
숫자 그대로 사용하면 된다.
else sb.Insert(0,n % b);
03 sb.Inset(0,숫자)를 사용하는 이유
문자열 인덱스0에 해당 숫자를 추가한다는 의미이다. 그러므로 결과를 거꾸로 저장할 수 있다.
예를들어 345를 16진수로 변환한다고 가정해보자
1) 345 % 16 = 21 ... 9
2) 21 % 16 = 1 ... 5
3) 1 % 16 = 0 ... 1
이다. 만약 Insert를 사용하지 않고 append를 사용했으면 951이 StringBuilder에 들어가있을것이다. 그러므로 정답인 159를 나오게 하려면 sb.Insert(0,숫자)를 사용해야한다.
코드 전문
using System;
using System.Text;
namespace baek2
{
class Program
{
static void Main(string[] args)
{
string[] token = Console.ReadLine().Split();
int n = int.Parse(token[0]);
int b = int.Parse(token[1]);
StringBuilder sb = new StringBuilder();
while(n!=0)
{
if(n % b > 9)
{
char a = (char)((n % b) + 55);
sb.Insert(0,a);
}
else sb.Insert(0,n % b);
n /= b;
}
Console.Write(sb.ToString());
}
}
}
반응형
'코딩테스트 준비 > 백준 C#' 카테고리의 다른 글
백준 C# - 17103 +) 풀이 (2) | 2023.11.26 |
---|---|
백준 C# - 2745 +)풀이 (0) | 2023.11.23 |
백준 C# - 2089 +) 풀이 (0) | 2023.11.22 |
백준 C# - 1212 +)풀이 (0) | 2023.11.21 |
백준 C# - 1373 +) 풀이 (0) | 2023.11.21 |
댓글