[백준] 11005번 - 10진법 to N진법 변환 (java)

팥빵·2025년 6월 3일

Baekjoon

목록 보기
24/49

>>문제 바로가기<<

이전의 N진법 -> 10진법 변환 문제에 이어서
이번엔 10진법 -> N진법 변환 문제이다.

10진법을 N진법으로 어떻게 바꿀까?
먼저 어떤 방식인지 이해해보자.


10진수 값을 N진법으로 나눈 나머지들을 한데 모아
"역순"으로 써주면 변환이 완료된다.

즉 위 결론을 과정으로 풀어보면 이렇다.

10진법 값을 N진법으로 나누고, 나머지를 저장한다.
그 N진법으로 나눈 10진법 값을 다시 N진법으로 나누고, 나머지를 저장한다.
.
.
.
위 과정을 반복하고, 더 이상 나눌 수 없을때까지 반복하며
출력은 역순으로 나타내면 변환이 완료된다.

위 정보를 바탕으로 설계한 코드는 아래와 같다.

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

class Main{
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        
        StringTokenizer st = new StringTokenizer(br.readLine(), " ");
        int N = Integer.parseInt(st.nextToken());
        int B = Integer.parseInt(st.nextToken());
        
        while(N != 0){
            if(N % B >= 10){	// 나머지가 10 이상일경우 알파벳으로 표기해야 한다.
                sb.append((char)(N % B + 'A' - 10));	// 'A'의 아스키코드는 65이다.
            }
            else{				// 나머지가 10 미만인 경우 바로 저장한다.
                sb.append(N % B);
            }
            N /= B;
        }
        System.out.println(sb.reverse().toString());	// 역순으로 출력한다.
        br.close();
    }
}

맞았습니다!!

profile
반갑습니다

0개의 댓글