[코드트리] 여러가지 진수변환

정민교·2024년 2월 7일
0

자료구조&알고리즘

목록 보기
3/10

[코드트리] 여러가지 진수변환

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

보통 10진수를 특정 진법으로 변환할 때 인수분해 하여 나머지를 역순으로 적어주어 완성하는 방식을 그대로 코드로 옮겨주면 된다.

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

public class Main {
    public static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    public static StringBuilder sb = new StringBuilder();
    public static int number, base;
    public static List<Integer> answer = new ArrayList<>();
    public static void main(String[] args) throws IOException {
        int[] input = Arrays.stream(br.readLine().trim().split(" ")).mapToInt(Integer::parseInt).toArray();
        number = input[0];
        base = input[1];
        while(true) {
            if (number < base) {
                answer.add(number);
                break;
            }
            answer.add(number % base);
            number /= base;
        }
        Collections.reverse(answer);
        for (Integer ele : answer) {
            sb.append(ele);
        }
        System.out.println(sb);
        br.close();
    }
}

시간복잡도

시간복잡도는 O(logN)이 된다.

여기서 N은 진법(base)를 나타낸다. 왜냐하면 계속 N진수를 만들기 위해 N으로 계속 나눌 수 없을 때까지 나누기 때문이다.

profile
백엔드 개발자

0개의 댓글