자료구조와 알고리즘
[자료구조와 알고리즘] 기수 변환
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]);
}
}
}
나머지를 구했을 때 그 나머지를 배열에 저장하고 출력할 때는 역순으로 출력해야합니다.