알고리즘/백준

백준 2745 진법변환 (Java)

고구마와 감자 2022. 3. 1. 09:09

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

 

2745번: 진법 변환

B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 

www.acmicpc.net

 

 

어떤 진수든 10진수로 바꾸는 방법은 똑같다.
각 자리의 10진수 숫자 * 진수의 각 자리수 제곱을 모두 더한 값이다.

public class Boj2745_진법변환 {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        StringTokenizer st = new StringTokenizer(br.readLine());
        String n = st.nextToken();
        int b = Integer.parseInt(st.nextToken());

        // 어떤 진수든 10진수로 바꾸는 방법은 똑같다.
        // 각 자리의 10진수 숫자 * 진수의 각 자리수 제곱을 모두 더한 값이다.

        long result = 0;
        int idx = 0; // 승 0, 1, 2, 3....
        int num = 0;  // 계산하기 위해 각 자리 숫자를 10진수로 바꿔준다.
        for (int i = n.length()-1; i >= 0; i++) {
            char c = n.charAt(i);

            if (c >= '0' && c <= '9') {
                num = c- '0';
            } else {
                num = c - 55;
            }
            result += num * Math.pow(b, idx++);
        }
        System.out.println(result);
    }


}