코딩테스트/백준

백준 11005번 : 진법 변환 2 [Java]

블로그 주인장 2023. 9. 25.

문제 링크

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

 

11005번: 진법 변환 2

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

www.acmicpc.net

문제 설명

풀이

1. 10진수로 주어진 N의 값을 주어진 B진법으로 변환해야한다.

2. 10 ~ 35까지는 문자로 변환이 가능하기 때문에 해당 조건을 추가해줘야한다.

3. (N % B < 10) 는 문자 변환이 필요 없기 때문에 나머지 계산 후 +'0'을 하여 char 변환을 해준다.

4. (N % B > 10) 는 문자 변환을 해야하기에 나머지 계산 후 'A'를 더하고 'A'가 10이기 때문에 10을 빼준 값을 형변환해준다.

5. 값을 StringBuilder에 넣은 후에는 값을 뒤돌려줘야 원래 값과 동일해지기 때문에 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();
        while (N > 0) {
            if (N % B < 10) {
                sb.append((char) (N % B + '0'));
            } else {
                sb.append((char) (N % B - 10 + 'A'));
            }
            N /= B;
        }

        System.out.println(sb.reverse().toString());
    }
}
반응형

'코딩테스트 > 백준' 카테고리의 다른 글

백준 27433번 : 팩토리얼 2 [Java]  (0) 2023.09.28
백준 1764번 : 듣보잡 [Java]  (0) 2023.09.24
백준 1157번 : 단어 공부 [Java]  (1) 2023.09.20

댓글