이번 문제는 문제를 이해하는 데에만 시간이 좀 걸렸다.
처음에는 예제 입력 3번째 줄의 각 수를 8진수로 변환한 후 출력하는 것으로 알고 풀어 예제 출력 중 6이 아닌 4 2가 나와서 이상함을 느꼈다.
예제 입력을 정리하면 입력의 2번째 줄은 A진법 수의 자릿수의 개수를 나타내고 3번째 줄은 각 자릿수이다.
예를 들어 3번째 줄 첫 번째 입력인 2는 $2 * 17^1$, 16은 $16 * 17^0$이고 10진수로는 $34 + 16 = 50$이다.
그러므로 10진수로 변환한 50을 B진법으로 변환하면 해결된다.
성공 소스
public class _11576 {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
StringBuilder sb = new StringBuilder();
Stack<Integer> stack = new Stack<>();
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(br.readLine());
st = new StringTokenizer(br.readLine());
int ten = 0;
// 10진수로 변환
for (int i = 0; i < m; i++) {
int square = m - i - 1;
ten += (int) (Math.pow(a, square) * (Integer.parseInt(st.nextToken())));
}
// b진수로 변환
while (ten > 0) {
stack.push(ten % b);
ten /= b;
}
while (!stack.isEmpty()) {
sb.append(stack.pop()).append(" ");
}
System.out.println(sb);
br.close();
}
}
'백준' 카테고리의 다른 글
[백준] 15829번 : Hashing - JAVA (0) | 2024.04.17 |
---|---|
[백준] 2108번 : 통계학 - JAVA (0) | 2024.04.12 |
[백준] 11005번 : 진법 변환 2 - JAVA (0) | 2024.03.31 |
[백준] 2745번 : 진법 변환 - JAVA (0) | 2024.03.31 |
[백준] 11561번 : 징검다리 - JAVA (0) | 2024.03.31 |