Java/백준알고리즘

[Java] 백준알고리즘 #11005 진법 변환 2

Sehyeok20 2023. 10. 5. 18:48
반응형

백준알고리즘 #11005 진법 변환 2

앞선 진법 변환 문제를 반대로 해 놓은 문제이다.

 

2023.10.05 - [Java/백준알고리즘] - [Java] 백준알고리즘 #2745 진법 변환

 

예시로 31이라는 수를 2진법으로 변환한다고 하면

31을 2로 나눈다 => 몫 15 나머지 1 

15를 2로 나눈다 => 몫 7 나머지 1 

7을 2로 나눈다 => 몫 3 나머지 1 

3을 2로 나눈다 => 몫 1 나머지 1

1을 2로 나눈다 => 몫 0 나머지 1

 

즉 몫이 0이 될 때 까지 n으로 나누고, 나머지들을 역순으로 나열하면 n진법 수를 구할 수 있다.

 

전체 코드는 다음과 같다.

import java.util.Scanner;

public class Main {
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int b = sc.nextInt();
        int tmp = 0;
        String result = "";
        while (n > 0) {
            tmp = n % b;
            if (tmp >= 10) {
                char c = (char) (tmp + 55);
                result += c;
            } else {
                result += tmp;
            }
            n = n / b;
        }
        for (int i = result.length() - 1; i >= 0; i--) {
            System.out.print(result.charAt(i));
        }

        sc.close();
    }
}

 

입력받은수 n을 b(진법)로 나눈 나머지가 10보다 크다면 아스키코드표를 이용해 A-Z까지에 해당하는 알파벳으로 바꿔준다. 아니라면(0-9 라면) 그대로 문자열에 추가해준다.

이후 n에는 n을 b로 나눈 몫을 저장.

이 과정을 n이 0이 될때까지 (몫이 0이 될 때 까지) 반복하면 완성.

 

반응형