PS/BOJ

BOJ 2745 진법 변환 [Java]

모달조아 2021. 8. 1. 03:12

BOJ 2745 진법 변환

1. 문제 링크

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

2. 문제 해설

B진법의 수를 10진법으로 변환하는 방법을 알아보자.
예시로 2진법 수 11001(2진수)을 들겠다. 1x2^4 + 1x2^3 + 0x2^2 + 0x2^1 + 1x2^0 = 25 이다.

N진법 수를 각 자리마다 10진법으로 변환하여 sum에 더해주어 10진수를 구했다.
이 때, N진법 수를 string으로 받았기에 아스키 코드를 이용한 문자열 파싱을 해주었다.

3. 코드 보기

import java.io.*;
import java.util.*;

public class Main
{
    public static void main(String[] args) throws IOException
    {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        StringTokenizer st = new StringTokenizer(br.readLine());

        String b = st.nextToken();
        String n = st.nextToken();

        char[] c = new char[b.length()];
        int sum = 0;

        for (int i = 0; i < b.length(); i++)
        {
            c[i] = b.charAt(i);
            if (c[i] >= '0' && c[i] <= '9')
                sum += (int) (c[i] - '0') * Math.pow(Integer.parseInt(n), b.length() - 1 - i);
            else if (c[i] >= 'A' && c[i] <= 'Z')
                sum += (10 + (int) (c[i] - 'A')) * Math.pow(Integer.parseInt(n), b.length() - 1 - i);
        }

        bw.write(Integer.toString(sum));

        br.close();
        bw.flush();
        bw.close();
    }
}