B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오.
[입력]
첫째 줄에 N과 B가 주어진다.
B진법 수 N을 10진법으로 바꾸면, 항상 10억보다 작거나 같다.
[출력]
첫째 줄에 B진법 수 N을 10진법으로 출력한다.
import java.util.Scanner;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
StringTokenizer st = new StringTokenizer(sc.nextLine());
String N = st.nextToken();
int B = Integer.parseInt(st.nextToken());
int result = 0; // 결과
int tmp = 1; // 가중치
for (int i = N.length() - 1; i >= 0; i--) {
char C = N.charAt(i);
if (C >= 'A' && C <= 'Z') {
result += (C - 'A' + 10) * tmp;
// 10을 더해주는 이유는 숫자로 표현할 수 없는 자리는 10부터 시작하기 떄문
} else {
result += (C - '0') * tmp;
}
tmp *= B; //자릿수 변환
}
System.out.println(result);
}
}
B진법
=> 10진법
: 자리마다 해당 진법을 곱해서 더해준다.