목차
문항 분석
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#
'IOS > 알고리즘 문제 풀이' 카테고리의 다른 글
[백준]18830_좌표압축 (0) | 2021.10.06 |
---|---|
[백준]5430_AC (0) | 2021.10.01 |
알고리즘 문제 풀이 51번 : 영지(territory)선택:(large) (0) | 2021.01.14 |
알고리즘 문제 풀이 50번 : 영지(territory)선택:(small) (0) | 2021.01.14 |
알고리즘 문제 풀이 47번_봉우리 찾기 (0) | 2021.01.12 |