algorithm

[C++] 백준 알고리즘 11005번 (진법 변환2)

Dev:P 2018. 10. 25. 23:35
반응형

문제

 


이번에 다뤄볼 문제는 11005번 문제 '진법 변환2'입니다.

진법 변환2 문제에서 연습해야 할 key-point10진법 수를 B진법으로 바꾸는 방법 입니다.

 

10진법 수를 B진법으로 바꾸는 방법만 알고있다면 이 문제는 사실 별로 설명할게 없습니다. 

우선 10진법 수 하나를 B로 나눈 몫이 0이 될때까지 나머지를 계속 구해주면 됩니다.

예를 들어 보여드리자면

 

ex) 10진법 수 11을 3진법으로 바꾸시오

    11/3 = 3 ... 2

    3/3 = 1 ... 0

    1/3 = 0 ... 1

    3진법 수 = 102

 

이렇게 몫이 0이 될때까지 구하고 나머지 값들을 역순으로 적어주면 끝입니다.

 

추가적으로 혹시나 A:10, B:11 ... 이런식으로 10진법을 넘어가는 진법은 알파벳 대문자를 사용한다는 부분에서 막혔다면, 아스키코드를 모르고 계신겁니다. 구글에서 아스키코드를 검색해보시고 아래 해답 소스를 보시면 바로 이해 할 수 있으실 겁니다.


 

코드(C++)

#include<iostream>
using namespace std;
 
int main() {
    int a, b;
    int arr[100];
    int i = 0;
    char t = 'A';
    cin >> a >> b;
 
    while (a != 0) {
        arr[i] = a%b;
        a = a / b;
        i++;
    }
    i--;
    for (i; i >= 0;i--){
        if (arr[i] >= 10) {
            for (int j = 10; j <= 35; j++) {
                if (arr[i] == j) cout << t;
                t++;
            }
        }
        else cout << arr[i];
        t = 'A';
    }
 
    return 0;
}

 

반응형