문제 링크
https://www.acmicpc.net/problem/2745
2745번: 진법 변환
B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를
www.acmicpc.net
문제 설명
코드
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 s = st.nextToken();
int N = Integer.parseInt(st.nextToken());
int tmp = 1;
int answer = 0;
for (int i = s.length() - 1; i >= 0; i--) {
char c = s.charAt(i);
if ('A' <= c && c <= 'Z') {
answer += (c-'A' + 10) * tmp;
} else {
answer += (c-'0') * tmp;
}
tmp *= N;
}
System.out.println(answer);
}
}
풀이
1) 입력받은 처음 값을 다음 값의 진법에 맞게 변경하면 된다.
2) 입력받은 값을 확인하여 대문자이면 해당 문자에 + 10을 더하여 진법에 맞게 계산한다.
3) 그 외의 경우에는 기존 진법에 맞게 더해서 출력한다.
반응형
'코딩테스트 > 백준' 카테고리의 다른 글
백준 2750번 : 수 정렬하기 [Java] (0) | 2023.09.06 |
---|---|
백준 14425번 : 문자열 집합 [Java] (0) | 2023.09.05 |
백준 11729번 : 최대 힙 [Java] (0) | 2023.09.04 |
댓글