백준/Java

[백준 자바] 14915번(진수 변환기) - 10진수를 n진수로 바꾸기

gamzaggang7 2024. 6. 19. 14:27
728x90

난이도 - 브론즈 2

문제

정수 m, n을 입력 받아, 10진수 m을 n진수로 바꾸어 출력하는 프로그램을 작성하시오.

입력

첫 줄에서 정수 m, n을 입력 받는다. (0 ≤ m ≤ 1,000,000, 2 ≤ n ≤ 16)

출력

변환한 n진수의 수를 출력한다. 11~16 진수의 경우 10 이상의 수는 A~F 문자를 사용한다. 예를 들어, 10은 A, 11은 B, 12는 C, 13은 D, 14는 E, 15는 F를 사용한다.

 


 

728x90

 

0~F의 문자를 문자열로 저장(dchar).

m%n를 인덱스로 하는 문자를 문자열에서 꺼내 StringBuffer에 붙인다.(나눌 수 없을 때까지 반복)

import java.io.*;
import java.util.StringTokenizer;

public class Main14915 {
  public static void main(String[] args) throws Exception {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

    StringTokenizer st = new StringTokenizer(br.readLine(), " ");

    int m = Integer.parseInt(st.nextToken());
    int n = Integer.parseInt(st.nextToken());

    bw.write(CardConv(m, n));

    bw.flush();
    br.close();
    bw.close();
  }

  static String CardConv(int m, int n) {
    String dchar = "0123456789ABCDEF";

    StringBuffer result = new StringBuffer();

    do {
      result.append(dchar.charAt(m % n));
      m /= n;
    } while (m != 0);

    return result.reverse().toString();
  }
}

728x90