티스토리 뷰

반응형

 

10진수->n진수 바꾸기 / n진수->10진수 바꾸기를 너무 오랜만에 해봐서 다시 공부하느라 오래 걸렸던 문제 ㅠ.ㅠ


문제의 조건

 

1. 10진수 n이 주어짐

 

2. n을 3진수로 바꾼 다음에 그 3진수를 뒤집음

 

3. 뒤집은 3진수를 다시 10진수로 바꾼 수를 리턴하기 

 


#include <string>
#include <vector>
#include <cmath>

using namespace std;

//오랜만에 재귀함수를 떠올리며... 재귀함수로 구현 
string GetTrit(int n)
{
    string trit = "";
    
    //n의 몫이 0이 될 때까지 나눠가면서 생기는 나머지들을 저장해 둠 
    int remainder = n % 3;

    if (0 >= n)
        return "";
    else
        trit = GetTrit(n / 3);

    //string으로 바꾼 나머지를 차곡차곡 더해준다. 
    trit += to_string(remainder);
    return trit;
}

int GetDecimal(string str)
{
    int decimal = 0;
    int mul = 0;
    for (int i = 0; str.size() > i; i++, mul++)
    {
        int num = str[i] - 48; //아스키코드에서 숫자 0은 48부터 시작하니까 48을 빼줘야 찐 숫자가 된다.
        decimal += num * pow(3, mul); //pow(a,b)에서 a의 b제곱(b승)을 구해주는 함수 
    }

    return decimal;
}

int solution(int n)
{
    string trit = GetTrit(n);

    int answer = GetDecimal(trit);

    return answer;
}

 

오랜만에 C 초반에 배울 때 하던 거 복습하고 좋네요,,,^^,,,,,

 

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함