백준 11576 Base Conversion (Java)

김주현·2019년 12월 30일
0

풀이
A진수를 10진수로 변환하여 저장 시킨 후 이를 다시 나머지 연산자를 활용하여 B진수로 변환시켜줌.

주의사항
10진수를 B진수로 다시 만들 시 나머지 연산자를 통해 넣게되면 실제값의 역순으로 들어가게되어 역순 출력을 해주어야 하는데 스택을 활용하여 역순 출력을 해주었다.

소스코드

public class Baekjoon11576_BaseConversion {

static Stack<Integer> stack = new Stack<>();

static public void main(String args[]) {
    Scanner sc = new Scanner(System.in);
    int base_A = sc.nextInt();
    int base_B = sc.nextInt();
    int index = sc.nextInt();

    int decimalNum = 0;

    //Pow 함수를 쓰지 않는 방법
//        for (int i = 0; i<index; i++) {
//            int x = sc.nextInt();
//            decimalNum = decimalNum * base_A + x;
//        }

    for(int i = index-1; i>=0; i--){
        int x = sc.nextInt();
        decimalNum += x * Math.pow(base_A, i);
    }

    convertBase(decimalNum, base_B);

    int size = stack.size();
    for(int i = 0; i<size; i++){
        if(i == size-1)
            System.out.print(stack.pop());
        else
            System.out.print(stack.pop() + " ");
    }
}

static void convertBase(int decimalNum, int base) {
    int num = decimalNum;

    while (num != 0) {
        int r = num % base;
        num /= base;
        stack.push(r);
    }
  }
}
profile
Hello World

0개의 댓글