[백준]2745번: 진법 변환

이진솔·2024년 5월 9일
0
post-thumbnail

# 문제

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

[입력]
첫째 줄에 N과 B가 주어진다.
B진법 수 N을 10진법으로 바꾸면, 항상 10억보다 작거나 같다.

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

# 정답

import java.util.Scanner;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        StringTokenizer st = new StringTokenizer(sc.nextLine());

        String N = st.nextToken();
        int B = Integer.parseInt(st.nextToken());

        int result = 0; // 결과
        int tmp = 1; // 가중치

        for (int i = N.length() - 1; i >= 0; i--) {
            char C = N.charAt(i);
            if (C >= 'A' && C <= 'Z') {
                result += (C - 'A' + 10) * tmp;
                // 10을 더해주는 이유는 숫자로 표현할 수 없는 자리는 10부터 시작하기 떄문
            } else {
                result += (C - '0') * tmp;
            }
            tmp *= B; //자릿수 변환
        }
        System.out.println(result);
    }
}

# 알아가야 할 것!

  1. B진법 => 10진법: 자리마다 해당 진법을 곱해서 더해준다.
profile
성장하기

0개의 댓글