B2745 진법 변환
날짜 | 2024-03-31 |
사용 언어 | Java |
문제 유형 | 구현, 문자열, 수학 |
문제 URL | https://www.acmicpc.net/problem/2745 |
시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
---|---|---|---|---|---|
1 초 | 128 MB | 52167 | 25658 | 21855 | 48.884% |
문제 #
문제 설명 #
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.util.Scanner;
public class Main {
public static void main(String[] args) throws Exception {
Scanner sc = new Scanner(System.in);
String N = sc.next();
// 출력 조건에 오류에 대한 조건이 없으므로 ABC 5와 같은 잘못된 입력은 고려하지 않음
int base = sc.nextInt();
long result = 0;
for (int i = 0; i < N.length(); i++) {
char digit = N.charAt(i);
int value;
// 아스키코드 변환
if(Character.isDigit(digit)) {
value = digit - '0';
} else {
value = digit - 'A' + 10;
}
result = result * base + value;
}
System.out.println(result);
}
}
다른 사람의 풀이 #