특정 진법의 수를 특정 진법의 수로 변환하는 문제이다.
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();
}
}