본문 바로가기

[BOJ] - JAVA

[백준] 11005 : 진법 변환 2 JAVA 풀이

 

뭔가 익숙한 듯 낯선 문제였다.

 

1. N과 B를 입력받는다.

2. 진법변환한 값을 저장할 스트링빌더를 생성한다. 

3. N이 0보다 클 동안 반복문을 실행한다.

    3-1. (N%B)가 0 ~ 9의 값이라면 (N%B)에 + '0'을 해 아스키코드 값으로 바꾼다.

            이 값을 char형으로 변환해서 스트링빌더에 추가한다.

    3-2. (N%B)가 10이상의 값이라면 (N%B)에서 10을 빼고 + 'A'를 한 값을 스트링빌더에 추가한다.

    3-3. N을 B로 나눠준다.

4. 스트링빌더의 내용을 역순으로 출력한다.

 

 

import java.io.*;
import java.util.*;

public class Main {

	public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));	
		StringTokenizer st = new StringTokenizer(br.readLine(), " ");
        
        // 입력받은 한 줄을 쪼개서 N과 B를 따로 저장함
		int N = Integer.parseInt(st.nextToken());
		int B = Integer.parseInt(st.nextToken());
		
		StringBuilder sb = new StringBuilder();
		
		while(N>0) {
			// N%B한 값이 10보다 작다면 그대로 char형으로 바꿔서 스트링빌더에 추가
			if((N%B)<10) {
				sb.append((char)((N%B)+'0'));
			}
            // 그렇지 않다면
            // N%B한 값에 +'A'를 더하고 -10한 값을 char형으로 바꿔 스트링빌더에 추가
			else {
				sb.append((char)((N%B)+'A'-10));
			}
            // N을 B로 나눔
			N /= B;
		}
        // 스트링빌더를 역순으로 출력함
		System.out.println(sb.reverse());
	}

}