반응형
앞선 진법 변환 문제를 반대로 해 놓은 문제이다.
2023.10.05 - [Java/백준알고리즘] - [Java] 백준알고리즘 #2745 진법 변환
예시로 31이라는 수를 2진법으로 변환한다고 하면
31을 2로 나눈다 => 몫 15 나머지 1
15를 2로 나눈다 => 몫 7 나머지 1
7을 2로 나눈다 => 몫 3 나머지 1
3을 2로 나눈다 => 몫 1 나머지 1
1을 2로 나눈다 => 몫 0 나머지 1
즉 몫이 0이 될 때 까지 n으로 나누고, 나머지들을 역순으로 나열하면 n진법 수를 구할 수 있다.
전체 코드는 다음과 같다.
import java.util.Scanner;
public class Main {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int b = sc.nextInt();
int tmp = 0;
String result = "";
while (n > 0) {
tmp = n % b;
if (tmp >= 10) {
char c = (char) (tmp + 55);
result += c;
} else {
result += tmp;
}
n = n / b;
}
for (int i = result.length() - 1; i >= 0; i--) {
System.out.print(result.charAt(i));
}
sc.close();
}
}
입력받은수 n을 b(진법)로 나눈 나머지가 10보다 크다면 아스키코드표를 이용해 A-Z까지에 해당하는 알파벳으로 바꿔준다. 아니라면(0-9 라면) 그대로 문자열에 추가해준다.
이후 n에는 n을 b로 나눈 몫을 저장.
이 과정을 n이 0이 될때까지 (몫이 0이 될 때 까지) 반복하면 완성.
반응형
'Java > 백준알고리즘' 카테고리의 다른 글
[Java] 백준알고리즘 #2903 중앙 이동 알고리즘 (0) | 2023.10.05 |
---|---|
[Java] 백준알고리즘 #2720 세탁소 사장 동혁 (2) | 2023.10.05 |
[Java] 백준알고리즘 #2745 진법 변환 (0) | 2023.10.05 |
[Java] 백준알고리즘 #2563 색종이 (0) | 2023.10.04 |
[Java] 백준알고리즘 #10798 세로읽기 (0) | 2023.10.04 |