본문 바로가기

Algorithm/자료구조

(C++) - 백준(BOJ) 11576 : Base Conversion

반응형

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

 

11576번: Base Conversion

타임머신을 개발하는 정이는 오랜 노력 끝에 타임머신을 개발하는데 성공하였다. 미래가 궁금한 정이는 자신이 개발한 타임머신을 이용하여 500년 후의 세계로 여행을 떠나게 되었다. 500년 후의

www.acmicpc.net

진법변환해 답을 저장할 자료구조를 적절히 선택하는 문제였습니다.

📕 풀이방법

📔 입력 및 초기화

1. 진법 a, 진법 b, a를 구성하는 10진수로 표현된 수의 개수m, 개수를 저장할 vector nums, 정답을 출력할 stack ans를 선언 후 적절히 입력받습니다. 2. m만큼 for loop를 수행하며 nums에 수들을 입력받고 저장합니다.

📔 풀이과정

함수 converter를 수행합니다.

a진법으로 표현된 수를 10진수로 변환한 뒤 다시 b진법으로 변환하고 결과를 ans에 push하는 함수입니다.

 

📔 정답출력

ans의 원소들을 pop하며 top부터 출력해줍니다.


📕 Code

#include <bits/stdc++.h>
using namespace std;
int a,b,m;
vector <int> nums;
stack <int> ans;

void converter(){
    int decimal = 0;
    int converted = 0;
    for(int i = 0; i < m; i++){
        decimal += nums[m - i - 1] * pow(a, i);
    }
    while(decimal){
        ans.push(decimal % b);
        decimal /= b;
    }
}

int main(){
    cin >> a >> b >> m;
    for(int i = 0, num; i < m; i++) {
        cin >> num;
        nums.push_back(num);
    }

    converter();

    while(ans.size()){
        cout << ans.top() << ' ';
        ans.pop();
    }
}