알고리즘/백준

백준 11005번 진법 변환 2 자바 Java (☆공부 255일차)

김발자~ 2023. 4. 11. 21:17
반응형

11005 진법 변환 2

https://www.acmicpc.net/problem/11005

 

11005번: 진법 변환 2

10진법 수 N이 주어진다. 이 수를 B진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를

www.acmicpc.net

 

 

 


백준 11005번 문제 진법 변환 2


문제


 

시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율
0.5 초 (추가 시간 없음) 256 MB 17823 9076 7577 51.310%

문제

10진법 수 N이 주어진다. 이 수를 B진법으로 바꿔 출력하는 프로그램을 작성하시오.

10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 사용한다.

A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35

입력

첫째 줄에 N과 B가 주어진다. (2 ≤ B ≤ 36) N은 10억보다 작거나 같은 자연수이다.

출력

첫째 줄에 10진법 수 N을 B진법으로 출력한다.

예제 입력 1

60466175 36

예제 출력 1

ZZZZZ

 

 

 


과정 생각해보기 & 오답


 

https://gimbalja.tistory.com/200

 

공부 116일차: 백준 11005번 진법 변환 2 자바 java

11005 진법 변환 2 https://www.acmicpc.net/problem/11005 11005번: 진법 변환 2 10진법 수 N이 주어진다. 이 수를 B진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수

gimbalja.tistory.com

4달 전에 푼 문제

 

10진수를 n진법으로 바꾸는 방법에 대해 알아야 한다

 

그림처럼 n진법에 해당하는 수로 계속 나누고, 몫이 n보다 작아진다면 멈추고 거꾸로 출력한다

 

다만 이 문제에서는 11~36진법도 다루어야 하는데, 이는 나머지가 순서대로 10~35를 가질 수 있다는 말이다

따라서 나머지가 10~35가 나오면 각 진법에 맞는 알파벳이 출력되도록 아스키코드 숫자를 보고, char 타입으로 변환한다

 

 

 


정답 인정 코드


 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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());
        StringBuilder sb = new StringBuilder();
        
        int n = Integer.parseInt(st.nextToken());
        int b = Integer.parseInt(st.nextToken());
        
        while(n > 0) {
            if(n%b < 10) {
                sb.append(n%b);
            }else {  
                sb.append((char)((n%b)+55));
            }
            // sb.append(n%b < 10? n%b :(char)((n%b)+55)); 안됨!
            n /= b;
        }
        
        sb.reverse();
        System.out.println(sb);
    }
}
 
cs

 

 

 


StringBuilder 안 쓰고 String에 더하는 방식을 가장 최근에 해봤는데, 메모리와 시간 두 측면 모두에서 별로였다

반응형