공부하기/백준

[Java] 백준 풀기 11576 - Base Conversion

XEV 2024. 2. 27. 23:53

자바 백준 11576번

실버 5

https://www.acmicpc.net/problem/11576

 

11576번: Base Conversion

타임머신을 개발하는 정이는 오랜 노력 끝에 타임머신을 개발하는데 성공하였다. 미래가 궁금한 정이는 자신이 개발한 타임머신을 이용하여 500년 후의 세계로 여행을 떠나게 되었다. 500년 후의

www.acmicpc.net

 

 

 

 

 

문제 보기

분류: 수학, 구현, 정수론

 

 

 

 

 

코드 풀이

import java.util.Scanner;
import java.util.ArrayList;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        // 입력으로부터 A진법, B진법, 자릿수의 개수를 받음
        int A = sc.nextInt();
        int B = sc.nextInt();
        int m = sc.nextInt();
        
        // A진법으로 표현된 숫자를 10진법으로 변환
        int decimal = convertToDecimal(sc, A, m);
        // 10진법 숫자를 B진법으로 변환
        ArrayList<Integer> converted = convertToBaseB(decimal, B);
        
        // 변환된 결과를 출력
        printConvertedResult(converted);
    }
    
    // A진법으로 표현된 숫자를 10진법으로 변환하는 메서드
    private static int convertToDecimal(Scanner sc, int A, int m) {
        int decimal = 0;
        for (int i = 0; i < m; i++) {
            int digit = sc.nextInt();
            decimal = decimal * A + digit;
        }
        return decimal;
    }
    
    // 10진법 숫자를 B진법으로 변환하는 메서드
    private static ArrayList<Integer> convertToBaseB(int decimal, int B) {
        ArrayList<Integer> converted = new ArrayList<>();
        while (decimal > 0) {
            int remainder = decimal % B;
            converted.add(remainder);
            decimal /= B;
        }
        return converted;
    }
    
    // 변환된 결과를 출력하는 메서드
    private static void printConvertedResult(ArrayList<Integer> converted) {
        for (int i = converted.size() - 1; i >= 0; i--) {
            System.out.print(converted.get(i) + " ");
        }
    }
}