아이디어 : 1. StringBuilder을 이용하야 한글자 씩 답을 만들어나가 보자
2. 나머지가 10이 넘는 경우 대분자 알파벳으로 바꾸는 방법을 고려해 보자
import java.util.Scanner;
public class Main {
public static void main(String[] args) throws Exception {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt(); // 변환할 숫자를 입력받음
int N = sc.nextInt(); // 변환할 진수를 입력받음
StringBuilder sb = new StringBuilder();
//진법 변환은 num을 N으로 나누는 것을 반복하고 역순으로 써야하는 특징이 있기에 StringBuilder을 사용한다.
while(num > 0) {
//나눌 값이 점점 작아지다 마지막에 0이 되는것을 활용하여 반복조건을 제시
int reminder = num % N;
//reminder은 나누고 난 나머지 즉 몫의 마지막 자리를 나타낸다.
if(reminder > 9) {
char mapper =(char) (reminder + 'A' - 10);
sb.insert(0, mapper);
//10 이상이라면 대문자 A -Z로 나타내기위해 매핑한다.
// 몫의 마지막자리를 나타내는 reminder을 계속 0번째 자리에 넣게 하면서 역순으로 넣는다.
}
else {
sb.insert(0, reminder);
// 몫의 마지막자리를 나타내는 reminder을 계속 0번째 자리에 넣게 하면서 역순으로 넣는다.
}
num = num / N;
//다음 계산을 위해 나는 몫으로 업데이트 한다.
}
System.out.print(sb);
}
}'java' 카테고리의 다른 글
| 백준 2869 달팽이 자바 java (0) | 2024.01.11 |
|---|---|
| 백준 2292 벌집 자바 java (0) | 2024.01.11 |
| 백준 2745 진법계산기 자바 java (0) | 2024.01.11 |
| 백준 2563 색종이 자바 java (1) | 2024.01.10 |
| 백준 1316 그룹단어 자바 java (0) | 2024.01.10 |