본문 바로가기

CS/알고리즘

알고리즘 스터디 문제 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타입으로 변환한다

'CS > 알고리즘' 카테고리의 다른 글

하노이의 탑  (0) 2023.10.27
시간 계산하기(손코딩)  (0) 2023.10.20
재귀함수와 반복문의 차이점  (0) 2023.10.19
소수 구하기  (0) 2023.10.03
중앙값 구하기  (0) 2023.09.20