[백준] 2745

ninano05·2026년 3월 26일

문자열 계산시 알아둘 것

  • '0' - '0'은 0이다.
  • '1' - '0'은 1이다.
    마찬가지로
  • 'A'-'A'는 0이다.
  • 'Z'-'A'는 35이다.
    이렇게 문자열 간 아스키 코드 차이를 계산해서 숫자 값으로 표시할 수 있다.
  • 'a'-'A'는 32이다.
    이걸로 대문자 소문자 변환도 가능하다.

진수 계산법
10진수인 경우
123일때 값을 계산하는 과정이
((110)+2)10 +3이다.
즉, B진수 일때, 앞의 자리수는 B를 거듭 제곱해주면 되는 것이다.
answer = answer*B + 앞자리수
이 공식을 반복해준다고 볼 수 있다.

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

public class Main {

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

        long answer = 0;

        StringTokenizer st = new StringTokenizer(br.readLine(), " ");
        String N = st.nextToken();
        int B = Integer.parseInt(st.nextToken());

        for(int i=0;i<N.length();i++) {
            char c = N.charAt(i);
            if(c>= '0' && c<= '9') {
                answer = answer * B + (c-'0');
            } else {
                answer = answer * B + (c-'A'+10);
            }
        }
        bw.write(answer+"\n");
        bw.flush();
        bw.close();
        br.close();
    }

}
profile
초보 개발자

0개의 댓글