무조건 배열에 저장할 생각을 버리자, 뽑아오는 방식에 따라 자료구조를 활용하자
#include <iostream>
using namespace std;
int stack[100], top = -1;
void push(int x){
stack[++top] = x;
}
int pop(){
return stack[top--];
}
int main() {
int n, k;
scanf("%d %d",&n,&k);
char str[20] = "0123456789ABCDEF"; //이게 매우 유용함
while(n>0){
push(n%k);
n=n/k;
}
while (top != -1) {
printf("%c", str[pop()]);
}
return 0;
}
- STL을 사용하지 않고 직접 Stack을 구현함.
- 11에 대한 2진수를 출력한다면 나머지값과 몫을 이용하여 구할 수 있는데 값을 그대로 저장하면 1 1 0 1로 저장한다
- 따라서 뽑아올때 역순으로 뽑아와야하는데, 할 수야 있지만 매우 비효율적이다 따라서 Stack을 이용하여 역순으로 출력한다.
- 그리고 저장된 값을 전부 뽑아올 때 top != -1로 하였지만 STL을 사용하면 !stack.empty() 때까지만 반복하게하면 된다.
- 진수 문제는 char str[20] = "0123456789ABCDEF"; 이게 매우 유용하다. 잊지말자
https://www.inflearn.com/course/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98/dashboard