-
728x90
첫 알고리즘 문제는 자료구조의 기본이라 할 수 있는 '스택'으로 정했다.
언어는 친구의 추천으로 C++로 정했는데,
하도 오랜만에 쓰니까.. 기억이 진짜 1도 안난다 ㅜㅜ일단, 명령 개수 n을 받은 다음을 어떻게 짜야할지 막막했다.
(역시 알고리즘을 1도 안 해본 티가 났다..)n만큼 for loop를 돌며, 명령어를 읽어오고
이 명령어에 따라 처리를 하는 방법으로 방향을 잡았다.#include <iostream> #include <string> using namespace std; void check(string str, int *stack, int &num) { int n = 0; if (str.compare("empty") == 0) { cout << (num == 0) ? 1 : 0; cout << endl; } else if (str.compare("push") == 0) { cin >> n; stack[num] = n; num++; } else if (str.compare("pop") == 0) { if (num == 0) cout << -1 << endl; else { cout << stack[num - 1] << endl; num--; } } else if (str.compare("size") == 0) { cout << num << endl; } else if (str.compare("top") == 0) { if (num == 0) cout << -1 << endl; else cout << stack[num - 1] << endl; } } int main() { string str; int n; // 명령의 수 cin >> n; int *stack = new int[n]; int num = 0; for (int i = 0; i < n; i++) { cin >> str; check(str, stack, num); } return 0; }
여기서 고비는...
stack배열에 몇개나 들어있는지 어떻게 가져올지를 몰라서, 그냥 크기를 저장해 둔 변수 num을 만들어버렸다.후후.. 맞았당!!~^^
코드가 뭔가 비효율적인 것 같긴 한데, 일단 풀었으니 다른 사람 풀이랑 비교해봐야겠다 ㅎㅎhttps://www.acmicpc.net/problem/10828
'알고리즘 풀이 > 백준' 카테고리의 다른 글
[10845] 백준 알고리즘 : 큐(C++) (0) 2019.11.20 [1874] 백준 알고리즘 : 스택 수열(C++) (0) 2019.11.20 [9012] 백준 알고리즘 : 괄호(C++) (0) 2019.11.20 [9093] 백준 알고리즘 : 단어 뒤집기(C++) (0) 2019.11.19 [10828] 백준 알고리즘 : 스택(C++) - 공부후 (0) 2019.11.15 댓글