1. 내 코드
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
ArrayList<Integer> list = new ArrayList<>();
// 10진수 받기
int digit = sc.nextInt();
// 진법 받기
int radix = sc.nextInt();
// 나머지를 list에 넣기
while (digit >= radix){
if(digit%radix > 9 ){
list.add(digit%radix +55);
}
else{
list.add(digit%radix);
}
digit /= radix;
}
//마지막 나머지 넣기
if(digit> 9){
list.add(digit + 55);
} else{
list.add(digit);
}
// 맨 처음 넣은 순대로 출력
for (int i = list.size()-1; i >=0 ; i--) {
if(list.get(i) > 9 ){
System.out.printf("%c", (char)list.get(i).intValue());
}else {
System.out.printf("%d", list.get(i));
}
}
}
}
2. 배운 점
10진수에서 다른 진수로 변환
항상 그냥 방법만 외워서 그런지 머릿 속에 제대로 남지 않았다.
따라서 원리를 찾아 이해해 보았다.
<참고 사이트>
진법의 의미, 그리고 2진법, 8진법, 16진법, 10진법 변환 원리와 방법 (tistory.com)
나눗셈의 원리를 진법으로 풀어 표시하면 다음과 같이 나온다.
'알고리즘 > 문제 풀이' 카테고리의 다른 글
백준 1193번 분수찾기 (0) | 2023.06.19 |
---|---|
백준 2720번 해답 (0) | 2023.06.10 |
백준 2745번 해답 (0) | 2023.06.08 |
백준 2563번 색종이 (0) | 2023.06.08 |
백준 10798번 세로읽기 (0) | 2023.06.07 |