[백준] 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에 해당하므로
이 됩니다.
이거를 코드화해봤습니다.
숫자 앞자리부터 변환해서 넣으려고 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
2745번: 진법 변환
B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를
www.acmicpc.net
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 |