PS/BOJ
BOJ 2745 진법 변환 [Java]
모달조아
2021. 8. 1. 03:12
BOJ 2745 진법 변환
1. 문제 링크
https://www.acmicpc.net/problem/2745
2. 문제 해설
B진법의 수를 10진법으로 변환하는 방법을 알아보자.
예시로 2진법 수 11001(2진수)을 들겠다. 1x2^4 + 1x2^3 + 0x2^2 + 0x2^1 + 1x2^0 = 25 이다.
N진법 수를 각 자리마다 10진법으로 변환하여 sum에 더해주어 10진수를 구했다.
이 때, N진법 수를 string으로 받았기에 아스키 코드를 이용한 문자열 파싱을 해주었다.
3. 코드 보기
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));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine());
String b = st.nextToken();
String n = st.nextToken();
char[] c = new char[b.length()];
int sum = 0;
for (int i = 0; i < b.length(); i++)
{
c[i] = b.charAt(i);
if (c[i] >= '0' && c[i] <= '9')
sum += (int) (c[i] - '0') * Math.pow(Integer.parseInt(n), b.length() - 1 - i);
else if (c[i] >= 'A' && c[i] <= 'Z')
sum += (10 + (int) (c[i] - 'A')) * Math.pow(Integer.parseInt(n), b.length() - 1 - i);
}
bw.write(Integer.toString(sum));
br.close();
bw.flush();
bw.close();
}
}