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 | 
										
									
										
									
										
									
										
									
댓글