728x90

🏆 목차.

  1. 문제
  2. 코드
  3. 풀이

 

🛒 문제

 

 

11005번: 진법 변환 2

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

www.acmicpc.net

 

🎨 코드

 

#include<iostream>
#include<string>
#include<algorithm>

using namespace std;

string ConvertFormation(int N, int B)
{
    string str;

    while (N > 0)
    {
        int temp = N % B;

        if (temp > 9)
        {
            str += temp - 10 + 'A';
        }
        else
        {
            str += temp + '0';
        }
        N /= B;
    }
    return str;
}
int main()
{
    int N, B;

    cin >> N >> B;

    auto result = ConvertFormation(N, B);

    reverse(result.begin(), result.end());

    cout << result;
}

 

🎯 풀이

 

백준 11005번 진법 변환 2 문제는 10진법 N을 B진법으로 바꿔 출력하는 문제입니다.

 

10 이상의 숫자를 표현하기 위해 'A' 부터 시작하는 알파벳을 사용해야 합니다.

그래서 위 코드에서 10 이상의 숫자일 경우, 'A'를 기준으로 해당 숫자를 표현하기 위해 10을 빼주고 'A'를 더하여 문자를 생성했습니다.

결과적으로 temp가 10 이상일 때, 'A'부터 시작하는 알파벳을 문자열에 추가할 수 있었습니다.

 

반면 temp가 10 미만일 경우 숫자가 '0'부터 '9'까지 숫자로 표현됩니다. 따라서 이 부분에서는 단순히 숫자에 '0'을 더해 해당 숫자를 문자열에 추가하도록 했습니다.

 

위와 같은 과정을 N이 0 이하가 될 때까지 반복해 준 뒤, 문자열을 역순으로 추가했기 때문에 마지막에 reverse를 해주었습니다.

 

728x90

+ Recent posts