Study hard

(c++)백준 11005번: 진법 변환 2 본문

백준/여러가지 문제들

(c++)백준 11005번: 진법 변환 2

Nimgnoej 2020. 6. 17. 16:23

https://www.acmicpc.net/problem/11005

 

11005번: 진법 변환 2

10진법 수 N이 주어진다. 이 수를 B진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 ��

www.acmicpc.net

[풀이]

어떤 수를 2로 계속 나눠서 그 나머지들로 이진수를 얻는 것처럼 N을 B로 계속 나눠서 그 나머지를 저장하여 한꺼번에 출력하는 방법을 썼다. 가장 마지막에 저장된 나머지부터 출력되기 때문에 stack을 사용하였다.

출력할 때 11진법 이상이고, 나머지가 10이상이면 문제에 있는 대로 알파벳 대문자를 대신 출력하도록 해주었다.

 

#include <iostream>
#include <stack>
using namespace std;

int N, B;

void getNum() {
	stack<int>s;
	char x;
	int d;

	while (N != 0) {
		d = N % B;
		N = N / B;
		s.push(d);
	}
	while (!s.empty()) {
		//10을 넘어가는 진법이고 나머지가 10 이상일 때
		if (B > 10 && s.top() >= 10) {
			cout << char(s.top() + 55);
		}
		else
			cout << s.top();
		s.pop();
	}
}

int main() {
	cin >> N >> B;
	getNum();
	return 0;
}