본문 바로가기
알고리즘/백준

백준 2745번 - 진법 변환 (Java 8)

by latissimus 2022. 3. 19.

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

 

2745번: 진법 변환

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

www.acmicpc.net

코드 :

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

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        int sum = 0;
        String N = st.nextToken();
        int B = Integer.parseInt(st.nextToken());

        // '0'~'9' : 48~57

        // A : 10 , B : 11 ...
        //'A' == 65 --> 알파벳의 숫자 값 = 알파벳 - 65 + 10
        // -> 10보다 클 때 -55(- 65 + 10)

        int powNum = 0;
        for (int i = N.length()-1; i >= 0 ; i--) {
            char num = N.charAt(i);
            if(48<= num && num <= 57){
                sum += (num -48) * Math.pow(B, powNum);
            }
            if(num >= 65){
                sum += (num -55) * Math.pow(B, powNum); // -55 = -65+10
            }
            powNum++;
        }
        System.out.println(sum);
    }
}

 

댓글