관리 메뉴

Storage Gonie

(10) [C++, Java] 백준 No.11576 : Base Conversion 본문

알고리즘/백준풀이7. 수학

(10) [C++, Java] 백준 No.11576 : Base Conversion

Storage Gonie 2019. 5. 7. 14:10
반응형

문제

풀이

자세한 풀이 : 

 

# C++

- 10진수 -> B진수 변환하는 부분을 string으로 처리했었는데, 벡터 방식으로 바꾼 이유는 2자리 수의 경우 reverse를 해주면
   앞뒤가 바껴버리기 때문에 문제가 발생할 수 있기 때문이다. 그러므로 벡터 방식으로 처리하자.

#include <iostream>
#include <algorithm>
#include <string>
#include <vector>

using namespace std;

int main(){
    int A, B;
    int count;
    int nums[30];

    // 입력받는 부분
    cin >> A >> B;
    cin >> count;
    for (int i = 0; i < count; i++)
        cin >> nums[i];

    // A진수 -> 10진수 변환하는 부분
    int ans = 0;
    for (int i = 0; i < count; i++)
        ans = ans*A + nums[i];

    // 10진수 -> B진수 변환하는 부분
    vector<int> vec;
    int n = ans;
    while(n != 0)
    {
        vec.push_back(n%B);
        n /= B;
    }
    reverse(vec.begin(), vec.end());

    for(int i = 0; i < vec.size(); i++){
        if( i == 0)
            cout << vec[i];
        else
            cout << ' ' << vec[i];       
    }
}

# C++

#include <iostream>

using namespace std;

void convert(int num, int base) 
{
    if (num == 0) 
        return;
    convert(num/base, base);
    
    printf("%d ",num%base);
}

int main() {
    int a,b;
    cin >> a >> b;
    
    int n;
    cin >> n;
    
    int ans = 0;
    
    //a진수를 10진수로 변환하는 것
    for (int i=0; i<n; i++) {
        int x;
        cin >> x;
        ans = ans * a + x;
    }
    
    convert(ans,b);
}

# Java

import java.util.*;

public class Main {
    public static void convert(int num, int base) {
        if (num == 0) {
            return;
        }
        convert(num/base, base);
        System.out.print(num%base + " ");
    }
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int b = sc.nextInt();
        int n = sc.nextInt();
        int ans = 0;
        for (int i = 0; i<n; i++) {
            int x = sc.nextInt();
            ans = ans * a + x;
        }
        convert(ans, b);
        System.out.println();
    }
}
반응형
Comments