C, C++ 문제풀이

BOJ 11005. 진법 변환 2

륵기 2020. 10. 26. 10:57
728x90
반응형

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

int main()
{
	int n, b, r;
	string answer = "";
	char a;
	cin >> n >> b;
	


	while (n > 0)
	{	
		r = n % b;
		if (r >= 10)
		{
			answer += char(r - 10 + 'A');
			
		}
		else {
			answer += char(r + '0');
		}
		n = n / b;

	}
	reverse(answer.begin(), answer.end());
	cout << answer;


	return 0;
}

주어진 수 N이 있을 때, b진법 계산을 할 때 N이 0이 될 때까지 계속 b로 나누어주면 되는데

여기서 A~Z까지 숫자로 부여해야하기 때문에 아스키코드를 사용해야한다.

 

A가 십진수로 10이라 했을 때, 아스키로는 65인데, 나머지가 10보다 클때, 10을 빼고 65를 더해주면 이에 해당하는 알파벳 값이 들어오게 될 것이다.

이렇게 구한 값으로 answer 문자열 변수에 계속 더해나가고 마지막에 뒤집어준다면 답이 나온다.

728x90
반응형