알고리즘 스터디 문제 1,2(기수변환)
기한) 2023.09.11(월) ~ 09.17(일) 10PM
문제1.
아래 예시처럼 기수 변환 과정을
자세히 나타내는 프로그램을
작성하세요. (아래 예시의 59, 2라는 값은 Scanner로 입력 받은 값입니다.)
Console창)
10진수를 기수 변환합니다.
변환하는 음이 아닌 정수 : 59
어떤 진수로 변환할까요? (2~36): 2
2 | 59
+————-
2 | 29 •••1
+————-
(•••생략•••)
2 | 1 •••1
+————-
0 •••1
2진수로 111011입니다.
문제2.
124 나라가 있습니다. 124 나라에서는 10진법이 아닌 다음과 같은 자신들만의 규칙으로 수를 표현합니다.
124 나라에는 자연수만 존재합니다.
124 나라에는 모든 수를 표현할 때 1, 2, 4만 사용합니다.
예를 들어서 124 나라에서 사용하는 숫자는 다음과 같이 변환됩니다.
10진법 124 나라 10진법 124 나라
1 1 6 14
2 2 7 21
3 4 8 22
4 11 9 24
5 12 10 41
자연수 n이 매개변수로 주어질 때, n을 124 나라에서 사용하는 숫자로 바꾼 값을 return 하도록 solution 함수를 완성해 주세요.
제한사항
n은 50,000,000이하의 자연수 입니다.
문제 1번
import java.util.*;
public class Jinsu {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
char[] arr = new char[35];
String sample = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
int count = 0;
System.out.println("10진수를 기수변환합니다");
System.out.print("변환하는 음이 아닌 정수:");
int target = scan.nextInt();
System.out.print("어떤 진수로 변환할까요?(2~36)");
int n = scan.nextInt();
System.out.println(n+"| "+target);
System.out.println(" +-------------------");
do{
arr[count]=sample.charAt(target%n);
target = target/n;
if(target==0){
System.out.println(" "+target+"..."+arr[count]);
}else{
System.out.println(n+"| "+target+"..."+arr[count]);
System.out.println(" +-------------------");
count++;
}
}while(target>0);
StringBuilder sb = new StringBuilder();
for(int i=0; i<=count;i++){
sb.append(arr[i]);
}
System.out.println(n+"진수로"+sb.reverse()+"입니다.");
}
}
*
String타입.charAt(인덱스번호)
: 문자열에서 원하는 위치의 문자를 char타입으로 변환한다