관리 메뉴

cyphen156

백준-일반 수학1 11005 진법변환2 본문

컴퓨터공학/알고리듬 풀이

백준-일반 수학1 11005 진법변환2

cyphen156 2025. 2. 7. 18:51

진법 변환2

진법변환1의 역방향

10진법 수를 N진법으로 변환하여 출력하는 프로그램

제약사항

  • 2 <= N <= 36
  • -1,000,000,000 <= Result <= 1,000,000,000

주의 사항

Z는 36진법수이기 때문에 표현 범위가 35까지이다.

--> 36은 자릿수올림

+++옜날에 풀었던 코드도 올린다. 

문자 배열에다가 아스키값 집어넣고 연산하는건 다시생각해도 뭐하는 짓인가 싶다. 효율적이긴한데...

C풀이

진법 변환2_11005.c

#define _CRT_SECURE_NO_WARNINGS

#include <stdio.h>

int main(void) {
    int input, n, idx = 0;
    char baseDigits[36];
    char result[100] = { 0 };

    for(int i = 0; i < 36; i++) {
        if(i < 10) {
            baseDigits[i] = '0' + i;
        } else {
            baseDigits[i] = 'A' + (i - 10);
        }
    }
    
    scanf("%d %d", &input, &n);
    
    while(input > 0) {
        result[idx++] = baseDigits[input % n];
        input /= n;
    }
    for (int i = idx - 1; i >= 0; i--) {
        printf("%c", result[i]);
    }
    return 0;
}

CPP풀이

진법 변환2_11005.cpp

/**
 * 백준 진법 변환2_11005
 * 진법변환1의 역방향
 * 10진법 수를 N진법으로 변환하여 출력하는 프로그램
 * 
 * 제한사항
 *********************************************
 * 2 <= N <= 36                              *
 * -1,000,000,000 <= Result <= 1,000,000,000 *
 *********************************************
 *
 *
 *
 * 주의
 * Z는 36진법수이기 때문에 표현 범위가 35까지이다.
 * --> 36은 자릿수올림
 * 
 * 풀이시간 0분
 */


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

using namespace std;

int main(void)
{
    int inputNumber = 0, PositionalNumberSystem;
    string changedNumber = "";
    
    cin >> inputNumber >> PositionalNumberSystem;
    while (inputNumber > 0)
    {
        // 나머지 먼저 찾고
        int temp = (inputNumber % PositionalNumberSystem);
        // 몫
        inputNumber /= PositionalNumberSystem;
        
        if (temp >= 10)
        {
            // temp가 10보다 크면 10이상의 진수라는것을 의미하니 아스키값 보정이 필요함
            // '9' = 48 + 9, 'A' = 65(48+9+)
            temp += 7; 
        }    
        changedNumber += ('0' + temp);
    }
    reverse(changedNumber.begin(), changedNumber.end());
    cout << changedNumber;
    return 0;
}

모든 예제 코드의 소스파일은 제 개인 깃허브 레포지토리 에 있습니다.

 

Workspace/알고리듬 풀이 at main · cyphen156/Workspace

Studying . Contribute to cyphen156/Workspace development by creating an account on GitHub.

github.com