[코드트리] 진수 to 진수

정민교·2024년 2월 7일
0

자료구조&알고리즘

목록 보기
5/10

진수 to 진수

특정 진법의 수를 특정 진법의 수로 변환하는 문제이다.

a진법의 수가 입력으로 주어지면 b진법의 수로 변환하여 출력한다.

a진법 수를 10진법으로 변환한 후 b진법 수로 변환하여 풀이했다.

10진법으로 변환하는 방법은 더블-더블 방법과 같은 방법으로 변환하였다.

import java.io.*;
import java.util.*;
import java.util.stream.*;

public class Main {
    public static int baseA, baseB;
    public static List<Integer> baseBNum = new ArrayList<>();
    public static StringBuilder sb = new StringBuilder();
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int[] base = Arrays.stream(br.readLine().trim().split(" ")).mapToInt(Integer::parseInt).toArray();
        baseA = base[0];
        baseB = base[1];
        List<Integer> inputNum = Arrays.stream(br.readLine().trim().split("")).map(Integer::parseInt).collect(Collectors.toCollection(ArrayList::new));
        int decimal = 0;
        for (Integer ele : inputNum) {
            decimal = decimal * baseA + ele;
        }
        
        while (true) {
            if (decimal < baseB) {
                baseBNum.add(decimal);
                break;
            }
            baseBNum.add(decimal % baseB);
            decimal /= baseB;
        }

        Collections.reverse(baseBNum);
        baseBNum.stream().forEach(sb::append);
        System.out.println(sb);
        br.close();
    }
}
profile
백엔드 개발자

0개의 댓글