https://www.acmicpc.net/problem/11005
11005번: 진법 변환 2
10진법 수 N이 주어진다. 이 수를 B진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를
www.acmicpc.net
접근 :
- 십진수 와 진법을 입력받는다.
- 입력 받은 십진수를 입력 받은 진법의 수로 변환한다.
코드 구현 :
import java.io.*;
import java.util.Stack;
public class Main {
// 입력 받은 숫자를 level 진수로 변환
static class ParseNum {
private long num;
private int level;
public ParseNum(long num, int level) {
this.num = num;
this.level = level;
}
// 입력 받은 10진수를 N 진수로 변환 후 리턴
public String parsetoLevel() {
long temp_num = this.num;
int temp = 0;
// 순서를 뒤집기 위한 character stack
Stack<Character> stack = new Stack<>();
StringBuilder sb = new StringBuilder();
char one_number;
while (temp_num > 0) {
temp = (int) temp_num % this.level;
one_number = (temp >= 10) ? (char) (temp + (int) '0' + 7) : (char) (temp + '0');
stack.push(one_number);
temp_num /= this.level;
}
// 스택의 문자를 문자열로 저장
while (!stack.empty()) {
sb.append(stack.pop());
}
return sb.toString();
}
}
public static void main(String[] srgs) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] inputs = br.readLine().split(" ");
ParseNum parse_number = new ParseNum(Long.parseLong(inputs[0]), Integer.parseInt(inputs[1]));
System.out.println(parse_number.parsetoLevel());
br.close();
}
}
'JAVA > Coding Test' 카테고리의 다른 글
[JAVA] 백준 2903 중앙 이동 알고리즘_일반 수학1 (0) | 2023.04.13 |
---|---|
[JAVA] 백준 2720 세탁소 사장 동혁_일반 수학1 (0) | 2023.04.13 |
[JAVA] 백준 2746 진법 변환_일반 수학1 (0) | 2023.04.11 |
[JAVA] 백준 5073 삼각형과 세 변_기하 (0) | 2023.03.23 |
[JAVA] 백준 10101 삼각형 외우기_기하 (0) | 2023.03.23 |