3진법 뒤집기

[문제 Link] https://programmers.co.kr/learn/courses/30/lessons/68935

문제 설명


자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.


제한사항


  • n은 1 이상 100,000,000 이하인 자연수입니다.

입출력 예


n result
45 7
125 229

입출력 예 설명


입출력 예 #1

  • 답을 도출하는 과정은 다음과 같습니다. |n (10진법)| n (3진법)| 앞뒤 반전(3진법)| 10진법으로 표현 |-|-|-|-| 45 |1200| 0021| 7

  • 따라서 7을 return 해야 합니다.

입출력 예 #2

답을 도출하는 과정은 다음과 같습니다.

n (10진법) n (3진법) 앞뒤 반전(3진법) 10진법으로 표현
125 11122 22111 229
  • 따라서 229를 return 해야 합니다.

제한시간 안내


null

전체 코드


using System;
using System.Collections.Generic;

public class Solution {
    public static int solution(int n)
    {
        int answer = 0;
        int index =1;
        int num = n;
        int size = 0;
        Queue<int> three = new Queue<int>();
        while(true)
        {
            index = index *3;
            if(n/index <1)
            {
                size = index;
                break;
            }
            else
            {

            }
        }
        Console.WriteLine(size);
        while(true)
        {
            size = size/3;
            if(size == 1)
            {
                three.Enqueue(num%3);
                break;
            }
            else
            {
                three.Enqueue(num/size);
                num = num%size;
            }
        }
        int index1 = 1;
        while(true)
        {
            if(three.Count == 0)
            {
                break;
            }
            else
            {
                answer = answer+ three.Dequeue()*index1;
            }
            index1 = index1*3;
        }
        return answer;
    }
    public static void Main(string[] args)
    {
        int n =45;
        Console.WriteLine(solution(n));
    }
}


결과