YunDev

[자료구조와 알고리즘] 기수 변환 본문

자료구조와 알고리즘

[자료구조와 알고리즘] 기수 변환

S준 2025. 1. 17. 21:55

정숫값을 임의의 기수로 변환하는 알고리즘입니다. 10진수 정수를 n진수 정수로 변환하려면 정수를 n으로 나눈 나머지를 구하는 동시에 나눈 몫에 대해 0이 될 때 까지 반복해야합니다. 이 과정으로 구한 나머지를 거꾸로 늘어놓은 숫자가 기수로 변환한 숫자입니다. 

 

package org.example;
import java.util.Scanner;
public class RadixConversion {
    static int conversion(int x, int r, char[] d) {
        int digit = 0;
        String dchar = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        do{
            d[digit++] = dchar.charAt(x%r); //나머지를 문자열로 저장
            x/=r;  //몫만 구함
        } while(x != 0);
        return digit;
    }
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n;    //정수
        int cd;   //진수
        int dno;  //변환 후 자릿수
        char[] cno = new char[32];

        do {
            System.out.print("변환하고자 하는 음이 아닌 정수: ");
            n = sc.nextInt();
        } while(n <= 0);
        do {
            System.out.print("변환할 진수 : ");
            cd = sc.nextInt();
        } while(cd < 2 || cd > 36);
        dno = conversion(n, cd, cno);
         System.out.print(cd+"진수로 변환하면 ");
        for (int i = dno-1; i >= 0; i--) {
            System.out.print(cno[i]);
             }
        }
}

나머지를 구했을 때 그 나머지를 배열에 저장하고 출력할 때는 역순으로 출력해야합니다.