

맨 왼쪽부터 (1 X 8^3) + (7 X 8^2) + (0 X 8^1) + (2 X 8^0) = 963 이 되므로
10진수 값은 963이 된다.
그리고 10진수 191 -> 8진수로 변환 하려면 몫이 0이 될 때까지 나눠주면 된다.
그렇다면 아래 사진과 같이 몫인 0과 나머지들이 남는데, 나머지 부분을 읽어주면 된다.
그래서 8진수로 변환한 값은 277이 된다.
또한, 10진법을 B진법으로 변환할 떄, 아래서부터 나머지 부분을 읽어주어야 하므로,
스택구조를 이용해서 POP하면서 읽어주도록 했다.
package com.example.week3_4;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
import java.util.StringTokenizer;
public class A209 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int A = Integer.parseInt(st.nextToken());
int B = Integer.parseInt(st.nextToken());
int T = Integer.parseInt(br.readLine());
int[] arr = new int[T];
st = new StringTokenizer(br.readLine());
for(int i=T-1; i>-1; i--) arr[i] = Integer.parseInt(st.nextToken());
//A진법을 10진법으로 변환
double aToTen = 0;
for(int i=T-1; i>-1; i--) aToTen += arr[i] * Math.pow(A,i);
//10진법을 B진법으로 변환
int tenToB = (int)aToTen;
Stack<Integer> stack = new Stack<>();
while(true){
if(tenToB / B == 0) {
stack.push(tenToB%B);
break;
}
stack.push(tenToB%B);
tenToB/=B;
}
while(!stack.isEmpty())System.out.print(stack.pop() + " ");
}
}

(진법 변환 참고)
[https://jerryjerryjerry.tistory.com/170]