본문 바로가기
백준 문제풀이/Java

[백준] 2745번 진법 변환 (ft. 아스키코드표) ⭐

by isfp_yykkng 2024. 3. 26.

[백준] 2745번 진법 변환 - 자바

문제

해설

포인트 1) 진법을 변환할 때는 1의 자리부터 => 문자열의 끝부터 시작 ( i-- 로 줄여야 함.)

포인트 2) 진법(base)는 계속 n승으로 올라가기 때문에 *=을 이용하여 올림.

포인트 3) 문제에서 나오는 N은 문자열로 받기 때문에 아스키코드 ' 0 ' 을 고려하여 빼주고 10을 더해야 함.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

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 str = st.nextToken();
        int base = Integer.parseInt(st.nextToken()); //진법

        int temp = 1; //진법의 증가를 담는 변수
        int sum = 0; //총 결과

        for(int i=str.length()-1; i>=0; i--){
            char c = str.charAt(i);
            if('A' <= c && c <= 'Z') sum += (c-'A' + 10) * temp;
            else sum += (c -'0') * temp; //문자 0의 아스키 코드는 48! 빼줘야함.
            temp *= base;
        }
        System.out.println(sum);
    }
}

[참고] 아스키코드표 ⭐

'백준 문제풀이 > Java' 카테고리의 다른 글

[백준] 2720번 세탁소 사장 동혁  (0) 2024.03.26
[백준] 11005번 진법 변환 2  (1) 2024.03.26
[백준] 2563번 색종이 ⚠️  (2) 2024.03.25
[백준] 10798번 세로읽기  (0) 2024.03.23
[백준] 2566번 최댓값  (0) 2024.03.22