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
반응형