31 16
1F
11 2
1011
이 문제는 n과 k를 입력받고, 10진수 n을 k진수로 변환하여 출력하는 문제이다.
이 때 k는 2,5,8,16 중 하나이다.
풀이법은 입력이 11 2 이면 11을 2로 나눈 나머지를 스택에 push하고, 11을 2로 나눈 몫에서 다시
2로 나눠서 나머지를 push하는 과정을 몫이 0이 될때까지 반복한다.
16진수는 0123456789ABCDEF 순서로, 나머지가 15인 경우
0번째 인덱스부터 시작하는 ch 배열의 15번째값인 F가 나오게 해야하므로 미리 ch 배열에
0123456789ABCDEF를 넣어주어 출력해준다.
/*53. k진수출력(스택클래스 사용)*/
import java.util.*;
import java.lang.*;
import java.io.*;
import java.util.StringTokenizer;
class Main
{
public static void main (String[] args) throws java.lang.Exception
{
System.setIn(new FileInputStream("input.txt"));
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int k = Integer.parseInt(st.nextToken());
String str = "0123456789ABCDEF";
char[] ch = new char[str.length()];
for(int i = 0;i<str.length();i++){
ch[i] = str.charAt(i);
}
Stack<Integer> stack = new Stack<>();
while(n != 0){
stack.push(n%k);
n = n/k;
}
while(!stack.empty()){
System.out.print(ch[stack.pop()]);
}
}
}