happy coding
[java] 2745. 진법 변환 본문
문제
B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오.
10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 사용한다.
A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35
입력
첫째 줄에 N과 B가 주어진다. (2 ≤ B ≤ 36)
B진법 수 N을 10진법으로 바꾸면, 항상 10억보다 작거나 같다.
출력
첫째 줄에 B진법 수 N을 10진법으로 출력한다.
import java.io.*;
import java.util.*;
class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
String Z = st.nextToken(); // 문자열로 입력 받음
int B = Integer.parseInt(st.nextToken());
// 문자열을 숫자로 변환하여 계산
int decimalNumber = 0;
for (int i = 0; i < Z.length(); i++) {
char c = Z.charAt(i);
int digit;
if (c >= 'A' && c <= 'Z') {
digit = c - 'A' + 10;
} else if (c >= 'a' && c <= 'z') {
digit = c - 'a' + 10;
} else {
digit = c - '0';
}
decimalNumber = decimalNumber * B + digit;
}
String output = Integer.toString(decimalNumber);
System.out.println(output);
}
}
진법은 매번 좀 틀리면서 알파벳 처리를 하게 되는 것 같다.
'coding study > baekjoon' 카테고리의 다른 글
[java] 10039. 평균 점수 (4) | 2023.08.18 |
---|---|
[java] 10757. 큰 수 (0) | 2023.08.18 |
[java] 25206. 너의 평점은 (0) | 2023.08.18 |
[java] 1874. 스택 수열 (0) | 2023.08.16 |
[java] 4949. 균형잡힌 세상 (0) | 2023.08.15 |
Comments