https://www.acmicpc.net/problem/2745
2745번: 진법 변환
B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를
www.acmicpc.net
접근 :
- 숫자와 진수를 입력받는다.
- 입력 받은 숫자를 정수로 변환한다.
- 10이상의 숫자를 해당 10진수의 수로 변환한다. ( ex> A : 10, B : 11)
- 10진수 = (입력받은 진수 ^ 각자리수) * 해당 자리수의 값 으로 계산하여 출력한다.
- 결과값이 항상 10억보다 작거나 같으므로 int 대신 long 타입으로 반환한다.
코드 구현 :
import java.io.*;
public class Main {
// 입력 받은 숫자를 level 진수로 변환
static class ParseNum {
private String num;
private int level;
public ParseNum(String num, int level) {
this.num = num;
this.level = level;
}
// 입력 받은 문자열 숫자를 10진수로 변환 후 리턴
public long parsetoDecimal() {
long result = 0;
int temp_parse_num = 0;
int temp = 0;
for (int i = 0; i < num.length(); i++) {
// 아스키 코드를 숫자로 변환
temp = (int) num.charAt(i);
// 10 이상의 문자를 숫자로 변환
temp_parse_num = (temp >= (int) 'A') ? (temp - (int) '0' - 7) : temp - '0';
result += Math.pow(level, num.length() - i - 1) * temp_parse_num;
}
return result;
}
}
public static void main(String[] srgs) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] inputs = br.readLine().split(" ");
ParseNum parse_number = new ParseNum(inputs[0], Integer.parseInt(inputs[1]));
System.out.println(parse_number.parsetoDecimal());
br.close();
}
}
'JAVA > Coding Test' 카테고리의 다른 글
[JAVA] 백준 2720 세탁소 사장 동혁_일반 수학1 (0) | 2023.04.13 |
---|---|
[JAVA] 백준 11005 진법 변환 2_일반 수학1 (0) | 2023.04.12 |
[JAVA] 백준 5073 삼각형과 세 변_기하 (0) | 2023.03.23 |
[JAVA] 백준 10101 삼각형 외우기_기하 (0) | 2023.03.23 |
[JAVA] 백준 9063 대지_기하 (0) | 2023.03.23 |