[백준] 2745번 진법 변환 - 자바
문제
해설
포인트 1) 진법을 변환할 때는 1의 자리부터 => 문자열의 끝부터 시작 ( i-- 로 줄여야 함.)
포인트 2) 진법(base)는 계속 n승으로 올라가기 때문에 *=을 이용하여 올림.
포인트 3) 문제에서 나오는 N은 문자열로 받기 때문에 아스키코드 ' 0 ' 을 고려하여 빼주고 10을 더해야 함.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
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 str = st.nextToken();
int base = Integer.parseInt(st.nextToken()); //진법
int temp = 1; //진법의 증가를 담는 변수
int sum = 0; //총 결과
for(int i=str.length()-1; i>=0; i--){
char c = str.charAt(i);
if('A' <= c && c <= 'Z') sum += (c-'A' + 10) * temp;
else sum += (c -'0') * temp; //문자 0의 아스키 코드는 48! 빼줘야함.
temp *= base;
}
System.out.println(sum);
}
}
[참고] 아스키코드표 ⭐
'백준 문제풀이 > Java' 카테고리의 다른 글
[백준] 2720번 세탁소 사장 동혁 (0) | 2024.03.26 |
---|---|
[백준] 11005번 진법 변환 2 (1) | 2024.03.26 |
[백준] 2563번 색종이 ⚠️ (2) | 2024.03.25 |
[백준] 10798번 세로읽기 (0) | 2024.03.23 |
[백준] 2566번 최댓값 (0) | 2024.03.22 |