(JAVA)백준온라인 11576번 - Base Conversion

2023. 9. 1. 16:37백준온라인

이 문제의 풀이는 요약하자면 A진법을 10진법으로 바꾸고 난 후 B진법으로 바꿔주면 되는 것이다!

두번째 줄은 자릿수를 입력하고 그 자릿수에 따른 숫자를 세번째 줄의 입력에 공백으로 나누어서 넣어주면 된다!

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;

public class Main {

    public static boolean[] isComposite;

    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());
        List<Integer> list = new ArrayList<>();

        int A = Integer.parseInt(st.nextToken()); // 미래사용
        int B = Integer.parseInt(st.nextToken()); // 정이가 사용
        int m = Integer.parseInt(br.readLine());

        st = new StringTokenizer(br.readLine());
        //10진수로 변환
        int decimalNum = 0;
        for(int i=m; i>0; i--){
            int num = Integer.parseInt(st.nextToken());
            decimalNum += num * Math.pow(A, i - 1);
        }

        if(decimalNum == 0){
            sb.append(0);
        }
        //B진수로 변환
        while(decimalNum != 0){
            list.add(decimalNum % B);
            decimalNum/=B;
        }
        for(int i = list.size()-1; i>=0; i--){
            sb.append(list.get(i) + " ");
        }
        System.out.println(sb);

    }
}

코드는 이러하다 이전 문제에 A진법을 10진법으로 전환하는 문제와 10진법으로 A진법으로 전환하는 문제가 있었는데 이를 통합한 문제라고 생각하면 된다!