본문 바로가기
알고리즘/백준

백준 11005 진법 변환 2 [C++]

by seongjun 2023. 11. 26.

https://www.acmicpc.net/problem/11005

 

11005번: 진법 변환 2

10진법 수 N이 주어진다. 이 수를 B진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를

www.acmicpc.net

10진법 수가 입력으로 주어지면, 입력받은 진법으로 변환하는 문제이다.

 

#include <iostream>
#include <string>
#include <map>
#include <cmath>

using namespace std;

int main(){
    int n;
    int b;
    cin >> n >> b;

    map<int, char> m;
    for (int i=0;i<10;i++){
        m.insert({i,'0'+i});
    }
    for (int i=10;i<36;i++){
        m.insert({i, 'A'+i-10});
    }
    string answer = "";
    while (n > 0){
        answer.insert(0, 1, m.find(n%b)->second);
        n /= b;
    }
    
    cout << answer;
}

map을 통해 숫자와 그에 맞게 진법에 변환한 수를 매핑한다.

입력받은 숫자를 입력받은 진법 숫자로 나눠가면서, 그 나머지를 map에서 찾아 값을 불러와 문자열에 추가시킨다.