본문 바로가기
C++ 코딩 문제 풀이/백준

[Baekjoon] 11005번: 진법 변환2

by 섬댕이 2023. 5. 6.

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

댓글