10진법 수 N
이 주어진다. 이 수를 B진법으로 바꿔 출력하는 프로그램을 작성하시오.
10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다.
이런 경우에는 다음과 같이 알파벳 대문자를 사용한다.
A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35
첫째 줄에 N과 B가 주어진다. (2 ≤ B ≤ 36)
N
은 10억보다 작거나 같은 자연수이다
첫째 줄에 10진법 수 N
을 B
진법으로 출력한다.
60466175 36
ZZZZZ
-문제를 만든 사람: baekjoon
-데이터를 추가한 사람: du9172
-문제의 오타를 찾은 사람: zmtn94
import java.util.Scanner;
public class Code11005 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner=new Scanner(System.in);
int num=scanner.nextInt();
int base=scanner.nextInt();
String string=""; //need reverse
do{
int temp=num%base;
if(10<=temp) {
string=string+(char)(temp-10+'A');
}
else{
string=string+Integer.toString(temp);
}
num=num/base;
}while(num>=base);
if(num!=0) {
if(10<=num) {
string=string+(char)(num-10+'A');
}
else{
string+=Integer.toString(num);
}
}
StringBuffer sBuffer=new StringBuffer(string);
String answer=sBuffer.reverse().toString();
System.out.println(answer);
}
}
2745번의 반대 경우를 구하는 것이었다.
평소에 n
진법을 구하는 대로 코드를 짰는데,
그렇게 되면 String에 반대로 저장되었기 때문에
StringBuffer sBuffer=new StringBuffer(string);
String answer=sBuffer.reverse().toString();
이번에 StringBuffer
이라는 것을 사용하여 string 내용을 reverse()
해주었다.
또, 입력받은 값이 10보다 크거나 같으면 'A'...'Z' 로 바꿔야 했는데,
그것을 입력받은 숫자-10+'A'
로 처리하였다. int to char
이용했다.