🌴 문제
문제
10진법 수 N이 주어진다. 이 수를 B진법으로 바꿔 출력하는 프로그램을 작성하시오.
10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 사용한다.
A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35
입력
첫째 줄에 N과 B가 주어진다. (2 ≤ B ≤ 36) N은 10억보다 작거나 같은 자연수이다.
출력
첫째 줄에 10진법 수 N을 B진법으로 출력한다.
예제 입력 1 복사
60466175 36
예제 출력 1 복사
ZZZZZ
🌴 문제 분석
package Backjoon;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class day13 {
// 진법 변환 2
// 10진법 수 N이 주어진다. 이 수를 B진법으로 바꿔 출력하는 프로그램
// 10진법 -> B진법으로 바꾸는 방법 : 나눌수 없을 때까지 나눈 후, 마지막 몫과 나머지를 아래부터 위로 순서대로 적기.
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int B = Integer.parseInt(st.nextToken());
StringBuilder sb = new StringBuilder(); // StringBuilder()는 속도를 빠르게 하기 위해 사용.
// 영어 대문자 65 ~ 90
while (N != 0) { // 나머지 값을 출력하고 몫이 0이 될 때까지 나눠준다.
if (N % B >= 10) {
sb.append((char) ((N % B) + 55)); // 아스키 코드 - 영어 대문자 65 ~ 99 // 나머지 값이 10 이상이면 55더하기.
} else {
sb.append(N % B); // StringBuilder - append()는 문자열을 더하는 역할.
}
N /= B;
}
System.out.println(sb.reverse().toString()); // 문자열 출력 - toString()이용.
}
}
-------
60466175 36
ZZZZZ
'Algorithm' 카테고리의 다른 글
Algorithm - 중앙 이동 알고리즘 Java (0) | 2023.05.09 |
---|---|
Algorithm - 세탁소 사장 동혁(Java) (0) | 2023.04.24 |
Algorithm - 진법 변환 (Java) (0) | 2023.04.19 |
Algorithm - ASCII 코드 변환표 (0) | 2023.04.19 |
Algorithm - 색종이 (Java) (0) | 2023.04.16 |