https://www.acmicpc.net/problem/11005
11005번: 진법 변환 2
10진법 수 N이 주어진다. 이 수를 B진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를
www.acmicpc.net
코드 :
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int B = Integer.parseInt(st.nextToken());
StringBuilder sb = new StringBuilder();
char[] arr = new char[36];
if(N == 0){
sb.append(0);
}
for (int i= 0; i< 10; i++){
arr[i] = (Character.forDigit(i,10));
}
for (int i = 10; i <= 35; i++) {
arr[i] = (char)('A'+(i-10)); //index 10 = 'A', 11 = 'B'... 35 = 'Z'
}
while(N != 0){
sb.append(arr[N % B]);
N/=B;
}
System.out.println(sb.reverse());
}
}
수정, 속도는 조금 느려짐
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int B = Integer.parseInt(st.nextToken());
StringBuilder sb = new StringBuilder();
char[] arr = new char[36];
if(N == 0){
sb.append(0);
}
while(N != 0){
if(N % B < 10){
sb.append(N%B);
}
if(N % B >= 10){
sb.append((char)('A' + (N % B) - 10));
}
N/=B;
}
System.out.println(sb.reverse());
}
}
참고:
[백준] 11005번 진법 변환 2 - Java, 자바
브론즈 1 https://www.acmicpc.net/problem/11005n%b가 9이하라면 list.add(n%b+'0') 아스키코드값 0을 더해줌으로써 a%b의 값을 아스키코드로 char형리스트에 저장한다. n%b가 10이상이라면 list.add(n%b
velog.io
char 과 int 변환 시 '0'을 더하거나 빼는 점, StringBuilder에 reverse()가 있다는 점을 알게 되었다.
'알고리즘 > 백준' 카테고리의 다른 글
백준 17103번 - 골드바흐 파티션 (Java 8) (0) | 2022.03.19 |
---|---|
백준 2089번 - -2진수 (Java 8) (0) | 2022.03.19 |
백준 1212번 - 8진수 2진수 (Java 8) (0) | 2022.03.17 |
백준 1373번 - 2진수 8진수 (Java 8) (0) | 2022.03.16 |
백준 17087번 - 숨바꼭질 6 (Java 8) (0) | 2022.03.16 |
댓글