Java/코딩테스트

[백준] 11005번: 진법 변환2 (JAVA)

다아빈 2025. 4. 2. 21:30
728x90
반응형

문제: https://www.acmicpc.net/problem/11005

문제 접근

이번 문제도 진법 변환입니다! 하지만 저번 글과 반대로 10진법을 N진법으로 변환하는 문제입니다.

그래서 이번에는 10진법을 N진법으로 바꾸는 방법을 설명해보겠습니다!

(혹시 N진법을 10진법으로 바꾸고 싶다면 이전 글을 참고해주세요)

 

10진수를 N진수로 변환하려면, 변환하고 싶은 10진수를 N으로 나누고 나머지를 옆에 적습니다. 이 과정을 더 이상 나눌 수 없을 때까지 반복한 다음, 몫부터 시작해서 적었던 나머지를 모두 적으면 됩니다!

이건 손그림이 필요해서,, 실제 예시는 보여드리지 않겠습니다 ㅠ.ㅠ

그래도 2진수 구하는 법을 아신다면, 다른 진수도 쉽게 구하실 수 있습니다!

전체 코드

import java.io.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        String input = br.readLine();
        int N = Integer.parseInt(input.split(" ")[0]);
        int B = Integer.parseInt(input.split(" ")[1]);

        List<Character> answer = new ArrayList<Character>();

        int mod = 0;

        for(int i = 0; N != 0; i++) {
            mod = N % B;
            if(mod >= 10){
                answer.add((char) (mod + 55));
            } else if(mod == 0){
                answer.add('0');
            }else {
                answer.add((char)(mod + '0'));
            }
            N /= B;
        }

        Collections.reverse(answer);

        for(Character c : answer){
            bw.write(c + "");
        }
        bw.flush();
    }
}

참고로 '0'은 null의 아스키 코드입니다!

 

읽어주셔서 감사합니다!

728x90
반응형