mun dev

[백준] 2745 진법 변환 자바(Java) 본문

알고리즘/백준

[백준] 2745 진법 변환 자바(Java)

mndev 2023. 4. 18. 14:15

문제설명

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.util.*;
import java.io.*;

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());
        String s = st.nextToken();
        int n = Integer.parseInt(st.nextToken());

        Stack<Character> stack=new Stack<>();

        for(int i=0; i<s.length(); i++){
            stack.push(s.charAt(i));
        }

        int result=0;

        for(int i=0; i<s.length(); i++){
            int c=stack.pop();

            if(c>=65) c-=55; // 알파벳인 경우
            else c-=48; // 0~9의 숫자인 경우

            for(int j=0; j<i; j++){
                c*=n;
            }
            result+=c;
        }
        System.out.println(result);
    }
}

'알고리즘 > 백준' 카테고리의 다른 글

[백준] 10989 수 정렬하기3 자바(Java)  (0) 2023.04.18
[백준] 14425 문자열 집합 자바(Java)  (0) 2023.04.18
[백준] 11501 주식 자바  (0) 2023.04.17
[백준] 1026 보물 자바  (0) 2023.04.16
[백준] 11399 ATM 자바  (0) 2023.04.15