알고리즘/백준
백준 2745 진법변환 (Java)
고구마와 감자
2022. 3. 1. 09:09
https://www.acmicpc.net/problem/2745
2745번: 진법 변환
B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를
www.acmicpc.net
어떤 진수든 10진수로 바꾸는 방법은 똑같다.
각 자리의 10진수 숫자 * 진수의 각 자리수 제곱을 모두 더한 값이다.
public class Boj2745_진법변환 {
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());
// 어떤 진수든 10진수로 바꾸는 방법은 똑같다.
// 각 자리의 10진수 숫자 * 진수의 각 자리수 제곱을 모두 더한 값이다.
long result = 0;
int idx = 0; // 승 0, 1, 2, 3....
int num = 0; // 계산하기 위해 각 자리 숫자를 10진수로 바꿔준다.
for (int i = n.length()-1; i >= 0; i++) {
char c = n.charAt(i);
if (c >= '0' && c <= '9') {
num = c- '0';
} else {
num = c - 55;
}
result += num * Math.pow(b, idx++);
}
System.out.println(result);
}
}