자바 백준 11005번
브론즈 1
https://www.acmicpc.net/problem/11005
문제 보기
분류: 수학, 구현
문제 풀기
주어진 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();
}
}
'공부하기 > 백준' 카테고리의 다른 글
[Java] 백준 풀기 3273 - 두 수의 합 (0) | 2023.08.11 |
---|---|
[Java] 백준 풀기 21921 - 블로그 (0) | 2023.08.09 |
[Java] 백준 풀기 13222 - Matches (0) | 2023.08.07 |
[Java] 백준 풀기 16486 - 운동장 한 바퀴 (0) | 2023.08.06 |
[Java] 백준 풀기 7510 - 고급 수학 (0) | 2023.08.05 |