happy coding

[java] 2745. 진법 변환 본문

coding study/baekjoon

[java] 2745. 진법 변환

yeoonii 2023. 8. 18. 22:07

문제

B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오.

10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 사용한다.

A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35

입력

첫째 줄에 N과 B가 주어진다. (2 ≤ B ≤ 36)

B진법 수 N을 10진법으로 바꾸면, 항상 10억보다 작거나 같다.

출력

첫째 줄에 B진법 수 N을 10진법으로 출력한다.

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

class Main {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine(), " ");

        String Z = st.nextToken(); // 문자열로 입력 받음
        int B = Integer.parseInt(st.nextToken());

        // 문자열을 숫자로 변환하여 계산
        int decimalNumber = 0;
        for (int i = 0; i < Z.length(); i++) {
            char c = Z.charAt(i);
            int digit;
            if (c >= 'A' && c <= 'Z') {
                digit = c - 'A' + 10;
            } else if (c >= 'a' && c <= 'z') {
                digit = c - 'a' + 10;
            } else {
                digit = c - '0';
            }
            decimalNumber = decimalNumber * B + digit;
        }

        String output = Integer.toString(decimalNumber);
        System.out.println(output);
    }
}

진법은 매번 좀 틀리면서 알파벳 처리를 하게 되는 것 같다.

'coding study > baekjoon' 카테고리의 다른 글

[java] 10039. 평균 점수  (4) 2023.08.18
[java] 10757. 큰 수  (0) 2023.08.18
[java] 25206. 너의 평점은  (0) 2023.08.18
[java] 1874. 스택 수열  (0) 2023.08.16
[java] 4949. 균형잡힌 세상  (0) 2023.08.15
Comments