백준 algorithm

백준 11005 - 진법 변환 2

cosmohoo 2020. 4. 1. 01:05
반응형

문제 설명

 

 

=> 간단한 진법 변환 문제이다. 

=> 진법 변환의 알고리즘을 알아야한다. 

 

ex) 

11 을 3진법으로 나타내고자 한다. 

 

11 / 3 = 3 ... 2(나머지)

3 / 3 = 1 ... 0

1/3 = 0 ...

 

 

=>의 결과로  102(3) 의 결과를 얻을 수 있다. 

=> 위와 같은 알고리즘을 실행하기 위해서는 stack을 사용하면 손쉽게 해결할 수 있다. 

 

 

 

=> stack 은 두개의 다른 자료형을 넣을 수 없다. 

=> 10이 넘는 숫자는 A  ....   Z로 표현할 수 있다. 

=> 아스키코드를 이용하여 해당 숫자를 표현하였다. 

 

 

 

 

#include <iostream>
#include <algorithm>
#include <stack>

using namespace std;

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);
  
    int N;
    int B;
    cin >> N;
    cin >> B;
    
    stack<int> st;
    while(N!=0)
    {
        st.push(N%B);
        N /=B;
    }
    
    while(!st.empty())
    {
        if(st.top()<10)
        {
            cout << st.top();
            st.pop();
        }
        else
        {
            char c=st.top()+55;
            cout<<c;
            st.pop();
        }
    }
    cout<<'\n';

    return 0;
}

 

 

실행 결과 
실행 결과 2 (ex)

반응형