[백준] 2745번 진법 변환 Java 문제 풀이
2023. 4. 6. 18:02ㆍ알고리즘/백준
728x90
반응형
문제풀이
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.*;
interface Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
StringTokenizer st;
String[] input = br.readLine().split(" ");
String S = input[0];
int B = Integer.parseInt(input[1]);
int result = 0;
int len = S.length();
for(int i=0; i<len; i++) {
int val = S.charAt(len-i-1)-55;
if(val < 10) {
val = val + 7;
}
result += val * Math.pow(B, i);
}
System.out.println(result);
}
}
B 진법의 수를 10진법으로 바꾸려면 다음과 같이 해야 합니다.
36진수 ZZZZZ에서 Z는 35에 해당하므로
$35\times 36^4 + 35\times 36^3 + 35\times 36^2 + 35\times 36^1 + 35\times 36^0$
이 됩니다.
이거를 코드화해봤습니다.
숫자 앞자리부터 변환해서 넣으려고 S.charAt(len-i-1)이라 썼습니다.
아스키코드에서 A가 65이므로 A부터 Z까지 55를 빼주면 10부터 35가 됩니다.
10 미만의 자연수는 48을 빼줘야 1부터 9가 되므로 55는 이미 빼줬으니 7만 더해줍니다.
그리고 그 값에다가 B의 i 제곱을 곱한 값을 모두 더하면 10진법으로 변환한 수가 됩니다.
출처 : https://www.acmicpc.net/problem/2745
728x90
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 2720번 세탁소 사장 동혁 Java 문제 풀이 (0) | 2023.04.07 |
---|---|
[백준] 11005번 진법 변환 2 Java 문제 풀이 (0) | 2023.04.06 |
[백준] 24313번 알고리즘 수업 - 점근적 표기 1 Java 문제 풀이 (0) | 2023.04.04 |
[백준] 24267번 알고리즘 수업 - 알고리즘의 수행 시간 6 Java 문제 풀이 (0) | 2023.03.23 |
[백준] 24266번 알고리즘 수업 - 알고리즘의 수행 시간 5 Java 문제 풀이 (0) | 2023.03.23 |