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

지수·2021년 8월 29일
0
post-thumbnail

알고리즘 문제 풀이를 블로그에 올리는 이유는 풀이, 코드를 기록하기 위함이니
앞으로 문제를 다 긁어오기보다 링크만 두고 풀이가 잘 보이도록 포스팅 할 예정입니다!

📄 문제

[백준] 진법 변환


👩‍💻 풀이

1. 문제 이해

이 문제는 주어진 B진법 수 N을 10진법으로 바꾸어 출력하는 문제이다.

진법 변환과 관련된 수학적 개념은 [코딩팩토리] 블로그를 참고하였다.
(이것 저것 구글링하여 기웃거리다가도 결국 종착지는 코딩팩토리 님 블로그...없는게 없다..멋지시다.)

2. 풀이

  • 주어진 N 값을 String으로 받은 뒤, toCharArrary를 통해 한 자씩 분리
  • 반복문을 돌면서 해당 자리 수가 숫자 값(0~9)인지 알파벳 값(A~Z)인지 케이스 분류
  • 숫자 값일 경우 c - '0'으로 int 변환 후 연산하고
  • 알파벳 값을 경우 int(c) - 55로 (A의 아스키 코드 65, 해당 문제에서 A의 값 10) int 변환 후 연산
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 N = st.nextToken();
        int B = Integer.parseInt(st.nextToken());
        int sum = 0;
        int len = N.length() - 1;

        for(char c : N.toCharArray()) {
            if(c >= '0' && c <= '9') {
                sum += (c - '0') * Math.pow(B, len--);
            }else {
                sum += ((int)c - 55) * Math.pow(B, len--);
            }
        }
        System.out.println(sum);
    }
}
profile
사부작 사부작

0개의 댓글