[백준] 11005

당당·2023년 4월 18일
0

백준

목록 보기
2/179
post-thumbnail

https://www.acmicpc.net/problem/11005

📔문제

10진법 수 N이 주어진다. 이 수를 B진법으로 바꿔 출력하는 프로그램을 작성하시오.

10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다.
이런 경우에는 다음과 같이 알파벳 대문자를 사용한다.

A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35


📝입력

첫째 줄에 N과 B가 주어진다. (2 ≤ B ≤ 36)
N은 10억보다 작거나 같은 자연수이다


📺출력

첫째 줄에 10진법 수 NB진법으로 출력한다.


📝예제 입력 1

60466175 36

📺예제 출력 1

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 이용했다.

profile
MySQL DBA 신입 지원

0개의 댓글