
이전의 N진법 -> 10진법 변환 문제에 이어서
이번엔 10진법 -> N진법 변환 문제이다.
10진법을 N진법으로 어떻게 바꿀까?
먼저 어떤 방식인지 이해해보자.
10진수 값을 N진법으로 나눈 나머지들을 한데 모아
"역순"으로 써주면 변환이 완료된다.
즉 위 결론을 과정으로 풀어보면 이렇다.
10진법 값을 N진법으로 나누고, 나머지를 저장한다.
그 N진법으로 나눈 10진법 값을 다시 N진법으로 나누고, 나머지를 저장한다.
.
.
.
위 과정을 반복하고, 더 이상 나눌 수 없을때까지 반복하며
출력은 역순으로 나타내면 변환이 완료된다.
위 정보를 바탕으로 설계한 코드는 아래와 같다.
import java.util.*;
import java.io.*;
class Main{
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int N = Integer.parseInt(st.nextToken());
int B = Integer.parseInt(st.nextToken());
while(N != 0){
if(N % B >= 10){ // 나머지가 10 이상일경우 알파벳으로 표기해야 한다.
sb.append((char)(N % B + 'A' - 10)); // 'A'의 아스키코드는 65이다.
}
else{ // 나머지가 10 미만인 경우 바로 저장한다.
sb.append(N % B);
}
N /= B;
}
System.out.println(sb.reverse().toString()); // 역순으로 출력한다.
br.close();
}
}
맞았습니다!!