본문 바로가기
PS/Baekjoon

[Baekjoon] 11005 - 진법 변환 2

by 서현 SEOHYEON 2023. 10. 1.

📝 문제

 

 

🔑 풀이 과정

· 예제1의 60466175를 36진법으로 바꾸는 과정

N을 B로 몫이 0일때까지 나눈다. 그리고 나눌때의 나머지들을 계산하는 순서의 역순으로 출력해주면 된다.

 

· 한가지 더 생각해야 할 점은, 10이상인 수는 알파벳으로 매칭해줘야 한다는 것! 10은 A로, 11은 B로.... 35는 Z로.

문자 'A'의 아스키코드 값은 65이므로 기존 숫자값 10보다 55가 크다는 것을 알 수 있다. 즉, char형 배열에 넣어줄 때 55를 더해서 넣어주면 된다.

그리고 10미만의 수도 마찬가지다. 문자 '0'은 48에 매칭된다. 그러므로 기존 숫자값에 48을 더해서 배열에 넣어주면 된다.

 

· 배열을 거꾸로 순회하면서 출력해주면 된다.

 

 

🔓 답안

import java.io.*;
import java.util.ArrayList;
import java.util.StringTokenizer;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        StringTokenizer st;

        st = new StringTokenizer(br.readLine());
        int N = Integer.parseInt(st.nextToken());
        int B = Integer.parseInt(st.nextToken());

        ArrayList<Character> answer = new ArrayList<>();
        while(N != 0){
            int remainder = N % B;

            if((0 <= remainder) && (remainder <= 9)){
                answer.add((char) (remainder + 48));
            }
            else if((10 <= remainder) && (remainder <= 35)){
                answer.add((char) (remainder + 55));
            }

            N = N / B;
        }
        
        //출력
        for(int i = answer.size() - 1; i >= 0; i--){
            bw.write(answer.get(i));
        }
        bw.flush();
        bw.close();
    }

}

 

 

 

🖤 알고리즘 분류

- 수학

- 구현

'PS > Baekjoon' 카테고리의 다른 글

[Baekjoon] 5339 - 콜센터  (0) 2023.10.03
[Baekjoon] 5596 - 시험 점수  (1) 2023.10.02
[Baekjoon] 5338 - 마이크로소프트 로고  (0) 2023.10.01
[Baekjoon] 2530 - 인공지능 시계  (0) 2023.09.29
[Baekjoon] 10718 - We love kriii  (0) 2023.09.28

댓글