[BOJ][C#] 11005 진법 변환 2

LimJaeJun·2024년 1월 6일
0

PS/BOJ

목록 보기
89/108

📕 문제

📌 링크

📗 접근 방식

딕셔너리 초기화

  • 0부터 35까지의 수를 키로 갖고, 각 키에 해당하는 값을 저장한 딕셔너리(dict)를 초기화한다.
    • 0부터 9까지는 그냥 숫자로 저장
    • 10부터 35까지는 10부터 A까지의 문자열로 저장

입력 처리

  • 숫자(number)와 진법(formation)을 각각 입력받는다.

진법 변환

  • ConvertToFormation 함수는 주어진 숫자와 진법을 이용하여 해당 진법으로 변환한 결과를 스택(st)에 저장한다.
  • 주어진 숫자를 진법으로 나눈 몫과 나머지를 계산하여 나머지를 딕셔너리에서 찾아 스택에 저장한다.
  • 몫을 새로운 숫자로 갱신하고, 이 과정을 몫이 0이 될 때까지 반복한다.

결과 출력

  • 스택에 저장된 값을 하나씩 꺼내면서 결과를 출력한다.

📘 코드

using System.Text;

namespace BOJ
{
    class No_11005
    {
        static Dictionary<int, string> dict = new Dictionary<int, string>();
        
        static void Main()
        {
            var sb = new StringBuilder();
            
            InitDictionary();
            
            var inputs = InputToIntArray();
            int number = inputs[0];
            int formation = inputs[1];
            
            var answer = ConvertToFormation(number, formation);
            while (answer.Count > 0)
            {
                sb.Append(answer.Pop());
            }

            Console.WriteLine(sb);
        }

        static void InitDictionary()
        {
            for (int i = 0; i < 36; i++)
            {
                dict.TryAdd(i, i < 10 ? i.ToString() : ((char)(i + 55)).ToString());
            }
        }

        static int[] InputToIntArray() => Array.ConvertAll(Console.ReadLine().Split(), int.Parse);

        static Stack<string> ConvertToFormation(int number, int formation)
        {
            Stack<string> st = new Stack<string>();

            int temp = number;
            while (temp != 0)
            {
                int g = temp / formation;
                int r = temp % formation;

                st.Push(dict[r]);

                temp = g;
            }
            
            return st;
        }
    }
}

📙 오답노트

딕셔너리에 해당 데이터들을 저장하고 찾는 방식을 고안했다면 쉽게 풀 수 있을 문제였을 것 같다.
딕셔너리에 2부터 저장하였고 그다음에 1부터 저장하였다 => 둘 다 실패
당연히 0부터 저장을 해야되는 것이였는데 생각이 짧았다.

📒 알고리즘 분류

  • 수학
  • 구현
profile
Dreams Come True

0개의 댓글

관련 채용 정보