-
Stack 을 이용한 알고리즘컴퓨터 공학 기초/알고리즘 ( algorithm ) 2020. 4. 13. 13:20
이번 포스트에서는 스텍 자료구조를 활용하여 문제를 해결한다.
스텍의 특성은 선입후출의 특성을 가지고 있다.
문제 1. 스텍 구현
https://www.acmicpc.net/problem/10828
해결
// Data_struct_c+.cpp : 콘솔 응용 프로그램에 대한 진입점을 정의합니다. // #include <iostream> #include <istream> #include <string> using namespace std; class STACK{ // 스텍 자료구조를 구현할 배열 stack_list 선언 // 크기 : 10,000 private: int *stack_list; int nData = 0; int cnt = 0; // 스텍을 사용하기 위한 인터페이스 // push, pop, size, empty, top 매서드 정의 public: STACK(){ stack_list = new int[10000]; } ~STACK(){ delete[] stack_list; } // 값 추가 void push(){ cin >> stack_list[cnt]; ++cnt; } // 값 꺼내오기 void pop(){ if (cnt == 0){ cout << -1 << endl; return; } else{ --cnt; cout << stack_list[cnt] << endl; } } // 스택 안의 값 갯수 확인 void size(){ cout << cnt << endl; } // 스택이 비엇는지 확인 void empty(){ if (cnt == 0){ cout << 1 << endl; } else{ cout << 0 << endl; } } // 스택 가장 위의 값 확인 void top(){ if(cnt == 0){ cout << -1 << endl; } else{ cout << stack_list[cnt-1] << endl; } } }; int main() { int n = 0; string cmd; STACK stack; cin >> n; for (int i = 0; i < n; ++i){ cin >> cmd; if (cmd == "push"){ stack.push(); } else if (cmd == "pop"){ stack.pop(); } else if (cmd == "size"){ stack.size(); } else if (cmd == "empty"){ stack.empty(); } else if (cmd == "top"){ stack.top(); } } }
+ 문자열은 string 컨테이너로 받을 수 있으며 비교할 때 if (cmd == "push") 와 같이 바로 모든 문자열 비교 가능
'컴퓨터 공학 기초 > 알고리즘 ( algorithm )' 카테고리의 다른 글
팩토리얼 0의 개수 구하기 (0) 2020.04.22 최대공약수 (유클리드호제법) 최소공배수 (0) 2020.04.21 전위 후위 증감 연산자 (0) 2019.11.27 " * " 로 삼각형 만들기 (0) 2019.11.19 알고리즘이란 ? (0) 2019.11.12