Doby's Lab

[알고리즘] 백준 11005번: 진법 변환 2 (C++) 본문

PS/BOJ

[알고리즘] 백준 11005번: 진법 변환 2 (C++)

도비(Doby) 2021. 11. 24. 10:16

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

 

11005번: 진법 변환 2

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

www.acmicpc.net

1. 주어진 N을 B로 나머지 연산 후 그 값을 'B진법'으로 바꾼다.

2. B진법으로 바꾼 값을 결과 문자열에 더한다.

3. 다음 값을 위해 N을 B로 나눠준다.

4. 1~3번 과정이 끝나면 결과 문자열을 뒤집는다.

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

char change(int value) {
	if (value <= 9) {
		return value + '0';
	}
	else {
		return (value - 10) + 'A';
	}
}

int main() {
	int N, B;
	cin >> N >> B;
	string answer;

	while (N / B > 0) {
		answer += change(N % B);
		N /= B;
	}
	answer += change(N % B);

	reverse(answer.begin(), answer.end());

	cout << answer;
	return 0;
}
728x90