Get Up & Code, MacKin Talk

알고리즘 문제 풀이 53번 : K진수 출력(stack) 본문

IOS/알고리즘 문제 풀이

알고리즘 문제 풀이 53번 : K진수 출력(stack)

맥킨 2021. 1. 15. 17:16

 

목차



문항 분석

10진수 N이 입력이 되었을 때, 이를 K진수로 변환해 출력하도록 하는 프로그램을 작성해야 한다.

접근 방법 : N을 입력 받았다고 했을 때, K로 나눈 나머지를 차례로 기록해 역순으로 출력하면 된다.


N%K 연산을 진행할 때마다 값을 스택 구조를 활용해 차례대로 저장한 후, top부터 역순으로 출력하면 된다.


이를 저장하기 위해 입력 범위를 담을 수 있는 충분한 크기를 가진 스택을 구성했다.

스택 구조를 간단히 도식화한 그림은 다음과 같다.

 

Code

//
//  53_k진수 출력.cpp
//  Algorithm
//
//  Created by WANKI KIM on 2021/01/14.
//

#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, m;
    cin >> n >> m;
    
    int stackin;
    while(n>0){
        stackin = n%m;
        push(stackin);
        n/=m;
    }
    
    int result;
    while(top>-1)
    {
        result = pop();
        if(result<10){
            cout << result;
        }else{
            switch (result) {
                case 10:
                    cout<< "A";
                    break;
                case 11:
                    cout<< "B";
                    break;
                case 12:
                    cout << "C";
                    break;
                case 13:
                    cout << "D";
                    break;
                case 14:
                    cout << "E";
                    break;
                case 15:
                    cout << "F";
                    break;
            }
        }
    }
    return 0;
}

결과 및 분석

1234를 2진법으로 변환해보았다.


총평 :

stack 구조를 활용해야하는 문제

stack 구조에 대한 정리를 해야겠다.

 

c++을 사용할 경우,

#include<stack>을 사용.
push(), pop(), empty(), top() 등 기본적으로 구성된 function들을 잘 활용할 수 있도록 알아두기.

 



해당 글은 'it 취업을 위한 알고리즘 문제풀이 (with C/C++) : 코테 대비' 강의를 수강하며, 개인적으로 정리하기 위해 업로드하였습니다.


강좌 : https://www.inflearn.com/course/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98#