[백준 / Java] 2745번 : 진법 변환

개발자가 되고 싶어요 ㅣ 2023. 6. 4. 18:39

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

 

2745번: 진법 변환

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

www.acmicpc.net

 


◎ 문제

 

 


◎ 코드 및 풀이

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import java.io.*;
import java.util.*;
 
public class Main {
    public static void main(String[] args) throws IOException {
        Scanner sc = new Scanner(System.in);
 
        String N = sc.next();
        int B = sc.nextInt();
 
        char[] arr = new char[N.length()];
 
        for (int i = 0; i < N.length(); i++) {
            arr[i] = N.charAt(i);
        }
 
        int num = 0;
 
        for (int i = 0; i <= N.length()-1; i++) {
            // 숫자일 때
            if(arr[i] >= '0' && arr[i] <= '9'){
                num += Math.pow(B,arr.length-i-1* (arr[i]-48);
           }
            // 문자일 때
            else{
                num += Math.pow(B,arr.length-i-1* (arr[i]-65+10);
            }
        }
        System.out.println(num);
    }
}
cs

 


◎ 기록

 

B진법 수 N을 10진법 변환하면 (N의 n번째 자릿수의 값 * B진수^(N의 n번째 자릿수))들의 합으로 표현할 수 있다.

이를 이용해 숫자일 때 와 문자일 때를 구분하여 변환해주는 코드를 완성했다.