백준 문제풀이

11005. 진법 변환 2 (자바, Java)

뮤츠 2022. 11. 22. 22:27

n진법에 대한 개념만 있으면 된다. n진법의 각 자릿수는 n진법의 거듭제곱과의 곱으로 이루어진다.

예를 들어 10진법 394는 3*10^2 + 9*10^1 + 4*10^0 으로 이루어진다.

마찬가지로 2진법 110 은 10진법으로 1*2^2 + 1*2^1 + 0*2^0 = 6이다.

 

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {

	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine(), " ");
		int n = Integer.parseInt(st.nextToken());
		int b = Integer.parseInt(st.nextToken());
		char[] radix = new char[36]; // 진법 각 자릿수를 표기할 배열
		for (int i=0; i<=9; i++) {
			radix[i]=(char) (i+48);
		} // 0부터 9까지는 그대로
		for (int i=10; i<=35; i++) {
			radix[i]=(char) (i+55);
		} // 10부터 35까지는 A~Z
		
		StringBuilder sb = new StringBuilder();
		if (n==0) {
			System.out.println(0);
		} else {
			while (n!=0) {
				sb.insert(0, radix[n%b]);
				n/=b;				
			}
			System.out.println(sb);
		}
	}
}