cyphen156
백준-일반 수학1 11005 진법변환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
'컴퓨터공학 > 알고리듬 풀이' 카테고리의 다른 글
백준-일반 수학 1 2903 중앙 이동 알고리즘 (1) | 2025.02.10 |
---|---|
백준-일반 수학 1 2720 세탁소 사장 동혁 (0) | 2025.02.10 |
백준-일반 수학1 2745 진법 변환 (0) | 2025.02.06 |
백준-2차원 배열 2563 색종이 (0) | 2025.02.04 |
백준-2차원 배열 10798 세로읽기 (0) | 2025.02.04 |