본문 바로가기
PS/Baekjoon

[Baekjoon] 2745 - 진법 변환

by 서현 SEOHYEON 2023. 9. 3.

📝 문제

 

 

🔑 풀이 과정

· 진법 변환을 한번이라도 공부해봤다면 매우 쉬운 문제. 나 같은 경우는 실제 사람이 계산할 때 처럼 뒤에서부터 계산하게 작성했다.

 

· 그리고 문자가 A일때는 숫자 10에 매칭, Z일때는 숫자 35에 매칭된다. A의 아스키 코드값은 65이므로, 10으로 만들어 주려면 55를 빼주면 된다.

 

 

 

🔓 답안

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

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        StringTokenizer st;

        //입력
        st = new StringTokenizer(br.readLine());
        String N = st.nextToken(); //B진법 수 N
        int B = Integer.parseInt(st.nextToken()); //진법

        //B진법 수 N을 10진법으로 바꾸기
        int len = N.length(); //N의 길이
        int answer = 0;
        for(int i = 0; i < len; i++){
            char c = N.charAt(len-1-i);

            int a = 0;
            if(('0' <= c) && (c <= '9')){
                a = c - '0';
            }
            else if(('A' <= c) && (c <= 'Z')){
                a = c - 55; //A가 10 B가 11 ... Z가 35에 매칭되어야 한다. 'A'는 65값을 가지므로 - 55을 해주면 된다.
            }

            answer += (a * Math.pow(B, i));
        }

        //출력
        bw.write(answer + "\n");
        bw.flush();
        bw.close();
    }

}

 

 

 

🖤 알고리즘 분류

- 수학

- 구현

- 문자열

'PS > Baekjoon' 카테고리의 다른 글

[Baekjoon] 14940 - 쉬운 최단거리  (0) 2023.09.06
[Baekjoon] 5086 - 배수와 약수  (0) 2023.09.06
[Baekjoon] 4101 - 크냐?  (0) 2023.09.02
[Baekjoon] 11286 - 절댓값 힙  (0) 2023.09.01
[Baekjoon] 11279 - 최대 힙  (0) 2023.08.31

댓글