엄지월드

백준 11576 Base Conversion 본문

알고리즘

백준 11576 Base Conversion

킨글 2024. 6. 29. 12:46

문제

설명

마지막 줄에 주어진 A진수를 B진수로 출력하는 문제였다. 

그렇게 하기 위해서 A진수를 10진수로 변경하고, 10진수를 B진수로 변경하도록 처리했다. 

가독성을 위해 처리 단위로 메소드로 뺏다. 

소스

package Baekjoon;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;

public class BOK_11576 {
    // 11576 Base Conversion
    public static void main(String[] args) throws IOException {
        process();
    }

    private static void process() throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        StringTokenizer st = new StringTokenizer(br.readLine());
        long A = Long.parseLong(st.nextToken());
        long B = Long.parseLong(st.nextToken());
        int m = Integer.parseInt(br.readLine());

        int[] arr = new int[m];
        st = new StringTokenizer(br.readLine());

        // A넘버를 10진수로 치환
        long decimalNumber = getAtoDecimal(m, arr, st, A);
        // 10진수를 B넘버로 치환
        StringBuilder result = getToBNumber(decimalNumber, B);

        bw.write(result.toString());
        bw.flush();
        bw.close();
    }

    private static StringBuilder getToBNumber(long decimalNumber, long B) {
    	// A넘버를 10진수로 치환
        StringBuilder result = new StringBuilder();
        while(decimalNumber > 0) {
            long remainder = decimalNumber % B;
            result.insert(0, remainder +" ");
            decimalNumber /= B;
        }
        return result;
    }

    private static long getAtoDecimal(int m, int[] arr, StringTokenizer st, long A) {
    	// 10진수를 B넘버로 치환
        long decimalNumber = 0;
        for (int i = 0; i < m; i++) {
            arr[i] = Integer.parseInt(st.nextToken());
            double pow = Math.pow(A, m - i -1);
            double v = arr[i] * pow;
            decimalNumber += (long)v;
        }
        return decimalNumber;
    }
}

 

'알고리즘' 카테고리의 다른 글

백준 4158 CD  (0) 2024.06.25
백준 15904 UCPC는 무엇의 약자일까?  (0) 2024.05.13
백준 4659 비밀번호 발음하기  (0) 2024.05.09
백준 5800 성적 통계  (0) 2024.05.08
백준 16435 스네이크버드  (0) 2024.05.06
Comments