뭔가 익숙한 듯 낯선 문제였다.
1. N과 B를 입력받는다.
2. 진법변환한 값을 저장할 스트링빌더를 생성한다.
3. N이 0보다 클 동안 반복문을 실행한다.
3-1. (N%B)가 0 ~ 9의 값이라면 (N%B)에 + '0'을 해 아스키코드 값으로 바꾼다.
이 값을 char형으로 변환해서 스트링빌더에 추가한다.
3-2. (N%B)가 10이상의 값이라면 (N%B)에서 10을 빼고 + 'A'를 한 값을 스트링빌더에 추가한다.
3-3. N을 B로 나눠준다.
4. 스트링빌더의 내용을 역순으로 출력한다.
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
// 입력받은 한 줄을 쪼개서 N과 B를 따로 저장함
int N = Integer.parseInt(st.nextToken());
int B = Integer.parseInt(st.nextToken());
StringBuilder sb = new StringBuilder();
while(N>0) {
// N%B한 값이 10보다 작다면 그대로 char형으로 바꿔서 스트링빌더에 추가
if((N%B)<10) {
sb.append((char)((N%B)+'0'));
}
// 그렇지 않다면
// N%B한 값에 +'A'를 더하고 -10한 값을 char형으로 바꿔 스트링빌더에 추가
else {
sb.append((char)((N%B)+'A'-10));
}
// N을 B로 나눔
N /= B;
}
// 스트링빌더를 역순으로 출력함
System.out.println(sb.reverse());
}
}
'[BOJ] - JAVA' 카테고리의 다른 글
[백준] 1373 : 2진수 8진수 JAVA 풀이 (0) | 2022.10.04 |
---|---|
[백준] 2745 : 진법 변환 JAVA 풀이 (0) | 2022.10.04 |
[백준] 9613 : GCD 합 JAVA 풀이 (1) | 2022.09.30 |
[백준] 1850 : 최대공약수 JAVA 풀이 (1) | 2022.09.30 |
[백준] 1934 : 최소공배수 JAVA 풀이 (0) | 2022.09.29 |