minghxx.blog
  • [백준 / 자바] 11005번 진법변환2
    2023년 12월 14일 09시 03분 17초에 업로드 된 글입니다.
    작성자: 민발자
    728x90

    문제

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

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

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

     

    입력

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

    60466175 36

     

    출력

    첫째 줄에 10진법 수 N을 B진법으로 출력한다.

    ZZZZZ

     

    풀이

    2745번 진법변환 반대로 푸는 문제

    10진수 46 2진수 101110

    n % b가 10이 넘는 경우 대문자로 변환 → 16진법의 경우 A는 10의미 A 아스키코드는 65 → n % b에 55 더함 

    10 이하인 경우 그대로

    n은 n/b로 변경

    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()); // 진법
    br.close();
    
    StringBuilder sb = new StringBuilder(); // 정답
    
    while (n > 0) {
        if(n % b >= 10){ // 10이상인 경우 대문자로 변경
            sb.append((char)((n % b) + 55));
        } else { // 10이하 그대로 입력
            sb.append(n % b);
        }
        n /= b;
    }
    
    // reverse해야함!
    System.out.println(sb.reverse().toString());

     

     

     

     

     

     

    728x90
    댓글