자바/코드트리
[코드트리] 진법 변환 5 - 자바(Java)
Jakorithm
2024. 3. 2. 00:28
728x90
문제
코드트리 | 코딩테스트 준비를 위한 알고리즘 정석
국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.
www.codetree.ai
10진수 숫자 한 개와 진법이 주어집니다. 입력받은 진법으로 변환하는 프로그램을 작성해 보세요.
입력 예시
93 2
출력 예시
1011101
코드
첫 번째 줄에 10진수 숫자와 변환할 진법이 공백으로 구분되어 주어진다.
- 1 <= 숫자 <= 21억
- 진법은 2, 8, 16 중 하나
import java.io.*;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine());
int decimal = Integer.parseInt(st.nextToken()); // 10진수
int base = Integer.parseInt(st.nextToken()); // 진법
// 10진수를 주어진 진법의 수로 변환
String result = convertDecimalToBase(decimal, base);
bw.write(result);
bw.flush();
bw.close();
}
private static String convertDecimalToBase(int decimal, int base) {
StringBuilder sb = new StringBuilder();
while (decimal > 0) {
// 10진수를 대상 진법으로 나눈 나머지
int temp = decimal % base;
if (temp >= 10) { // 10보다 큰 경우 문자로 매핑
sb.append((char) (temp - 10 + 'a'));
} else { // 10 미만이면 숫자 그대로
sb.append(temp);
}
// 10진수를 대상 진법으로 나누기
decimal = decimal / base;
}
return sb.reverse().toString();
}
}
728x90