공부하기/백준

[Java] 백준 풀기 11005 - 진법 변환 2

XEV 2023. 8. 8. 23:32

자바 백준 11005번

브론즈 1

https://www.acmicpc.net/problem/11005

 

11005번: 진법 변환 2

10진법 수 N이 주어진다. 이 수를 B진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를

www.acmicpc.net

 

 

 

 

 

문제 보기

분류: 수학, 구현

 

 

 

 

 

문제 풀기

주어진 10진수를 목표 진법으로 나누어 그에 따른 나머지가 10 미만인지 또는 10 이상인지 판별한다.

10 미만일 경우 숫자로 변환하고, 10 이상일 경우 알파벳으로 변환하여 저장한다.

숫자 또는 알파벳 변환은 `char`를 이용한 계산 특성을 이용한다.

 

 

 

 

 

코드 보기

import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt(); // 10진법 수 N을 입력받음
int B = sc.nextInt(); // 목표 진법 B를 입력받음
// 10진법 수 N을 B진법으로 변환하여 결과를 얻음
String result = convertToBaseN(N, B);
// 변환된 결과를 출력
System.out.println(result);
}
// 10진법 수를 B진법으로 변환하는 함수
public static String convertToBaseN(int num, int base) {
StringBuilder sb = new StringBuilder(); // 변환된 결과를 저장하기 위한 StringBuilder 객체 생성
// 주어진 10진법 수가 0보다 큰 동안 반복
while (num > 0) {
int remainder = num % base; // 현재 자릿수의 값을 목표 진법으로 나눈 나머지를 계산
char digit; // 변환된 자릿수를 저장할 변수
if (remainder < 10) {
// 나머지가 10보다 작은 경우 (0부터 9까지)
digit = (char) ('0' + remainder); // 숫자로 변환
} else {
// 나머지가 10 이상인 경우 (예: 10부터 35까지)
digit = (char) ('A' + remainder - 10); // 알파벳 대문자로 변환
}
sb.insert(0, digit); // 변환된 자릿수를 StringBuilder의 앞에 삽입하여 순서를 뒤집음
num /= base; // 현재 자릿수 처리 후 다음 자릿수로 넘어감
}
// 변환된 결과를 문자열로 반환
return sb.toString();
}
}