※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 14915번 문제인 진수 변환기이다.
문제는 아래 링크를 확인하자.

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

 

14915번: 진수 변환기

변환한 n진수의 수를 출력한다. 11~16 진수의 경우 10 이상의 수는 A~F 문자를 사용한다. 예를 들어, 10은 A, 11은 B, 12는 C, 13은 D, 14는 E, 15는 F를 사용한다.

www.acmicpc.net

주어진 자연수 M을 N진법으로 바꿔 출력하는 문제이다.

 

M을 N으로 나눈 나머지를 저장하고 N으로 나누는 것을 M이 0이 될 때까지 반복한 다음, 저장한 나머지들을 역순으로 출력하는 것으로 문제를 해결할 수 있다.

 

단, 위와 같이 구현하면 입력으로 M=0이 주어질 경우 아무런 출력을 하지 않아 틀리게 되므로 예외처리를 따로 해주자. 

 

아래는 제출한 소스코드이다.

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

int M, N;
stack<int> stk;
char arr[16] = { '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F' };

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);

	cin >> M >> N;
	if (M == 0) cout << 0;
	else {
		while (M) {
			stk.push(M % N);
			M /= N;
		}
		while (!stk.empty()) {
			cout << arr[stk.top()];
			stk.pop();
		}
	}
}
728x90

'BOJ' 카테고리의 다른 글

[BOJ 14911 // C++] 궁합 쌍 찾기  (1) 2022.10.01
[BOJ 6040 // C++] Hexadecimal Conversion  (0) 2022.09.30
[BOJ 1233 // C++] 주사위  (0) 2022.09.28
[BOJ 6060 // C++] Wheel Rotation  (0) 2022.09.27
[BOJ 6059 // C++] Pasture Walking  (1) 2022.09.26

+ Recent posts