BAEKJOON 11005번: 진법 변환2

Kim Hyen Su·2023년 6월 21일
0

⏲️ 알고리즘

목록 보기
18/95

11005번 문제

문제

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. 진법 변환 간단한 개념에 대해 이해하자.
    • x진법 → 10진법
      : x의 제곱근 값을 더해서 구한다.
    • 10진법 → x진법
      : 10진법 값을 x로 나누어 몫이 0이 나올때까지 나눠진 몫을 또 나눠준 다음 나머지 값들을 역순으로 나열하면 된다.
  2. 'A' ~ 'Z' 문자가 아스키 코드표에서 65~90까지의 값을 의미하는 것을 알고 있어야 한다.

🆕새롭게 알게된 내용

  • StringBuilder에 reverse() 메서드... 역순으로 정렬해주는 함수.

제출 답안

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()," ");

		int N = Integer.parseInt(st.nextToken());

		int B = Integer.parseInt(st.nextToken());

		StringBuilder sb = new StringBuilder();

		while(N > 0){
			
			if(N%B >= 10){
				char ch = (char)(N % B + 55);
				sb.append(ch);
			}else{
				sb.append(N%B);
			}

			N /= B;
		}

		System.out.println(sb.reverse());
		br.close();
	}
}
profile
백엔드 서버 엔지니어

0개의 댓글