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));
}
}