본문 바로가기
PS/BOJ

[자바] 백준 11576 - Base Conversion (boj java)

by Nahwasa 2022. 5. 2.

문제 : boj1576

 

 

  우선 A진법의 수를 10진법으로 만들고, 10진법을 B진법으로 만들면 된다.

A에서 10진법을 만드는것은 예를들어 각 자리수가 ..., c2, c1, c0 이고 현재 a진법의 수라면

... + c2*a^2 + c1*a^1 + c0*a^0 을 해주면 된다.

 

  그럼 그렇게 만들어진 10진법 수를 나누기와 나머지연산을 사용해 B진법으로 만들어주면 되긴한데, 자바의 경우 Integer.toString에서 해당 기능을 지원해주므로 그렇게 처리했다.

 

 

코드 : github

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
    private void solution() throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        int a = Integer.parseInt(st.nextToken());
        int b = Integer.parseInt(st.nextToken());
        int m = Integer.parseInt(br.readLine());
        int num = 0;
        int tmp = 1;
        for (int i = 0; i < m-1; i++) tmp *= a;
        st = new StringTokenizer(br.readLine());
        while (m-->0) {
            int cur = Integer.parseInt(st.nextToken());
            num += tmp*cur;
            tmp/=a;
        }
        String res = Integer.toString(num, b);
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < res.length(); i++) {
            char c = res.charAt(i);
            sb.append(c>'9'?c-'a'+10:c-'0').append(' ');
        }
        System.out.println(sb);
    }

    public static void main(String[] args) throws Exception {
        new Main().solution();
    }
}

댓글