본문 바로가기
컴퓨터 공학/백준

[백준] JAVA 자바 : 진법 변환 (2745번)

by kim-dev 2024. 1. 22.
반응형

앞에서 봤던 진법 변환 2가 10진수에서 B진수로 바꾸는 문제였다면, 이 문제는 B진수를 10진수로 바꾸는 문제이다.

사실 진법 변환을 잘 몰랐는데 이번에 문제들을 풀면서 잘 배워간다(…)
자릿수 별로 B의 자릿수 제곱을 곱한 값들을 다 더해주면 된다!
브론즈라 그런지 크게 어려운 부분은 없는 문제.

 

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

public class RadixChange_2745 {
    
    public static int stoi(String str) {
        return Integer.parseInt(str);
    }


    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        
        StringTokenizer st = new StringTokenizer(br.readLine(), " ");
        String N = st.nextToken();
        int B = stoi(st.nextToken());
        
        int res = 0; // 최종적으로 반환할 10진수 값
        
        for (int i=0; i<N.length(); i++) {
            char c = N.charAt(i);
            int tmp;
            if (c >= 'A') { // 그 단어가 알파벳인 경우
                tmp = (int)c - 'A' + 10; // 그 알파벳을 해당하는 수로 바꿔준다 ('A'부터 10)
            } else { // 알파벳이 아닌 경우 (숫자인 경우)
                tmp = c - '0'; // char로 되어있는 그 수를 int로 바꿔준다
            }
            tmp *= Math.pow(B, N.length()-i-1); // 자릿수 만큼 B의 거듭제곱으로 곱한 값을
            res += tmp; // 반환할 값에 더한다
        }
        
        System.out.print(res);
        
        
        br.close();
    }
}

 

 

로그인

 

www.acmicpc.net

 

 

작성일자: 2023-09-17