11005번: 진법 변환 2

문제:

10진법 수 N이 주어진다. 이 수를 B진법으로 바꿔 출력하는 프로그램을 작성하시오.

10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 사용한다.

A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35

입력:

첫째 줄에 N과 B가 주어진다. (2 ≤ B ≤ 36) N은 10억보다 작거나 같은 자연수이다.

풀이:

출처: https://ourcalc.com/2진수-변환기/

출처: https://ourcalc.com/2진수-변환기/

코드:

#include <iostream>
#include <stack>

using namespace std;

int main(){
	int number, n;
	stack<char> answer;
	//입력 
	cin >> number >> n;
	//진법 변환 구현 
	while(number > 0) {
		//나머지가 10이상인 경우 스택에 알파벳 push(11진법 이상인 경우) 
		if(number%n >= 10) answer.push((char)('A'+number%n-10));
		//나머지가 9이하인 경우 나머지인 숫자값 push(10진법 이하인 경우)
		else answer.push((char)(number%n+'0'));
		//숫자를 반내림으로 나누어 줌 
		number /= n;
	}
	//출력 
	while(!answer.empty()){
		cout<<answer.top();
		answer.pop();
	}
}