https://www.acmicpc.net/problem/11005
11005번: 진법 변환 2
10진법 수 N이 주어진다. 이 수를 B진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를
www.acmicpc.net
문제 해결 과정
착안
앞의 포스트에서와 마찬가지로, ASCII Code와 실질적으로 가리키는 수 사이의 변환에 주의하며 실제 진법을 변환하는 과정과 동일하게 프로그래밍 한다.
구현
앞의 포스트와는 진법을 반대로 변환하는 문제인데, 사람에 따라 차이는 있을 수 있겠지만 개인적으로는 이번 문제가 아주 약간은 더 생각하기 까다로울 수는 있다고 생각한다. 그러나 앞의 포스트와 마찬가지로 실제 사람이 진법 변환을 계산하는 과정과 동일하게 차근차근 프로그래밍 하면 쉽게 구현할 수 있다.
[스포 주의] 아래 '더보기'를 누르면 코드가 나오니 주의하세요~
더보기
#include <iostream>
#include <string>
using namespace std;
char Convert(int n)
{
return char(n <= 9 ? n + '0' : n - 10 + 'A');
}
int main()
{
int n;
int radix;
int digit;
string result;
cin >> n >> radix;
while (n / radix > 0)
{
digit = n % radix;
n = n / radix;
result = Convert(digit) + result;
}
result = Convert(n) + result;
cout << result;
return 0;
}
실행 결과
* 코드를 제출한 시점과 글 작성 시점이 달라, 주석 추가 등의 이유로 실행 결과의 코드 길이는 상이할 수 있음.
'C++ 코딩 문제 풀이 > 백준' 카테고리의 다른 글
[Baekjoon] 1193번: 분수찾기 (0) | 2023.05.06 |
---|---|
[Baekjoon] 2292번: 벌집 (0) | 2023.05.06 |
[Baekjoon] 2745번: 진법 변환 (0) | 2023.05.06 |
[Baekjoon] 2563번: 색종이 (0) | 2023.05.06 |
[Baekjoon] 10798번: 세로읽기 (0) | 2023.05.05 |
댓글