이전에 풀었던 11005번에서 내용을 뒤집은 것 같은 문제였다.
다음과 같은 순서로 금방 해결할 수 있었다.
1. N과 B를 입력받는다.
이때 N은 String으로 B는 int로 입력받았다.
2. B진법에서 10진법으로 변환한 값을 저장할 변수 result를 생성한다.
3. 입력받은 N의 순서를 뒤집기 위해서 StringBuffer 변수 rev를 생성한다.
StringBuffer.reverse() 메서드를 사용해 N의 내용을 뒤집은 것을 rev에 저장한다.
4. rev의 길이(=N의 길이)만큼 반복문을 실행한다.
4-1. char c = rev.charAt(i)으로 rev에 저장된 값을 한 글자씩 c에 저장한다.
4-2. c가 아스키코드 0 ~ 9 라면 c - '0'한 값을 int로 캐스팅하고, B의 i제곱을 곱한다. 그걸 result에 더한다.
4-3. c가 알파벳대문자라면 c - 'A' +10한 값을 int로 캐스팅하고, B의 i제곱을 곱한다. 그걸 result에 더한다.
5. result를 출력한다.
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
String N = st.nextToken();
int B = Integer.parseInt(st.nextToken());
StringBuffer rev = new StringBuffer(N);
rev = rev.reverse();
int result = 0;
for(int i=0;i<rev.length();i++) {
char c = rev.charAt(i);
if(c>='0'&&c<='9') {
result += ((int)(c-'0'))*Math.pow(B, i);
}
else {
result += ((int)(c-'A'+10))*Math.pow(B, i);
}
}
System.out.println(result);
}
}
'Algorithm > [BOJ] - JAVA' 카테고리의 다른 글
[백준] 1212 : 8진수 2진수 JAVA 풀이 (0) | 2022.10.04 |
---|---|
[백준] 1373 : 2진수 8진수 JAVA 풀이 (0) | 2022.10.04 |
[백준] 11005 : 진법 변환 2 JAVA 풀이 (1) | 2022.09.30 |
[백준] 9613 : GCD 합 JAVA 풀이 (1) | 2022.09.30 |
[백준] 1850 : 최대공약수 JAVA 풀이 (1) | 2022.09.30 |