위 문제와 마찬가지로 진법 변환에 대한 이해, 아스키 코드에 대한 이해가 있다면 쉽게 풀 수 있습니다.
아이디어
1. 10진법으로 표현된 수를 B진법으로 표현하고 싶다면 B로 나누면서 나머지들을 모으면 됩니다.
8을 2진법으로 나타내기
8 % 2 = 0, 8 / 2 = 4
4 % 2 = 0, 4 / 2 = 2
2 % 2 = 0, 2 / 2 = 1
1 % 2 = 1, 1 / 2 = 0
몫이 0이 된 순간 나누기를 멈추고 나머지들을 모두 이어 붙이면
1000(2)
이처럼 2진법으로 잘 표현됩니다.
2. 문제에서는 최대 36진법까지 지원하고 있는데 11~35를 'A' ~ 'Z'로 표현하고 있으므로 아스키코드를 이용하면 쉽게 표현이 가능합니다.
풀이 코드
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int B = sc.nextInt();
int r;
String temp = "";
while(N > 0) {
r = N % B;
N = N / B;
if (10 <= r && r <= 35) {
temp = temp + (char) (r - 10 + 'A');
} else {
temp = temp + (char) (r + '0');
}
}
String result = "";
for (int i = temp.length()-1; i >= 0; i--) {
result += temp.charAt(i);
}
System.out.println(result);
}
}
'Algorithm > 백준 알고리즘' 카테고리의 다른 글
2292번. 벌집 (0) | 2023.04.07 |
---|---|
2903번. 중앙 이동 알고리즘 (0) | 2023.04.06 |
2869번. 달팽이는 올라가고 싶다 (0) | 2023.04.06 |
2720번. 세탁소 사장 동혁 (0) | 2023.04.04 |
2745번. 진법 변환 (0) | 2023.04.04 |