본문 바로가기
코딩테스트 준비/백준 C#

백준 C# - 11005 +)풀이

by 코딩하는 돼징 2023. 11. 22.
반응형

풀이

나머지가 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

댓글