개발 블로그
article thumbnail

2745번 문제

 

2745번. 진법 변환

진법에 대한 이해, 아스키코드에 대한 이해만 있다면 충분히 풀 수 있는 어렵지 않은 문제입니다. 아이디어 B진법으로 표현된 숫자를 10진법으로 변환하면 다음과 같습니다. a * B^4 + b * B^3 + c * B^2

w-hand.tistory.com

위 문제와 마찬가지로 진법 변환에 대한 이해, 아스키 코드에 대한 이해가 있다면 쉽게 풀 수 있습니다.

아이디어

1. 10진법으로 표현된 수를 B진법으로 표현하고 싶다면 B로 나누면서 나머지들을 모으면 됩니다.

8을 2진법으로 나타내기
8 % 2 = 0, 8 / 2 = 4
4 % 2 = 0, 4 / 2 = 2
2 % 2 = 0, 2 / 2 = 1
1 % 2 = 1, 1 / 2 = 0

몫이 0이 된 순간 나누기를 멈추고 나머지들을 모두 이어 붙이면
1000(2)
이처럼 2진법으로 잘 표현됩니다.

2. 문제에서는 최대 36진법까지 지원하고 있는데 11~35를 'A' ~ 'Z'로 표현하고 있으므로 아스키코드를 이용하면 쉽게 표현이 가능합니다.

 

 

풀이 코드

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int N = sc.nextInt();
        int B = sc.nextInt();
        int r;

        String temp = "";
        while(N > 0) {
            r = N % B;
            N = N / B;

            if (10 <= r && r <= 35) {
                temp = temp + (char) (r - 10 + 'A');
            } else {
                temp = temp + (char) (r + '0');
            }
        }

        String result = "";
        for (int i = temp.length()-1; i >= 0; i--) {
            result += temp.charAt(i);
        }
        System.out.println(result);
    }
}

'Algorithm > 백준 알고리즘' 카테고리의 다른 글

2292번. 벌집  (0) 2023.04.07
2903번. 중앙 이동 알고리즘  (0) 2023.04.06
2869번. 달팽이는 올라가고 싶다  (0) 2023.04.06
2720번. 세탁소 사장 동혁  (0) 2023.04.04
2745번. 진법 변환  (0) 2023.04.04
profile

개발 블로그

@하얀.손

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!