풀이
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);
}
}
}