티스토리 뷰

Algorithm/Baekjoon Online Judge

백준 10828번 스택 [C++]

감성적인 개발자 2021. 7. 21. 23:57

https://www.acmicpc.net/problem/10828

 

10828번: 스택

첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지

www.acmicpc.net

 

소스코드


#include<iostream>
using namespace std;

int mystack[10000];
int top = 0;

void solution(string s){
    if (s == "push"){
        cin >> mystack[top];
        top++;
    }
    else if(s == "pop"){
        if(top == 0) 
            cout << "-1" << '\n';
        else{
            cout << mystack[top - 1] << '\n';
            top--;
        }
    }
    else if(s == "size"){   cout << top << '\n';    }
    else if(s == "empty"){
        if(top == 0) cout << "1" << '\n';
        else cout << "0" << '\n';
    }
    else if(s == "top"){
        if(top == 0) cout << "-1" << '\n';
        else cout << mystack[top - 1] << '\n';
    }
}

int main(){
    int N;
    string instruct;
    cin >> N;
    for(int i = 0; i < N; i++){
        cin >> instruct;
        solution(instruct);
    }
}

 

처음 실행했을 때 원하는 출력이 나오지않아 string 비교연산자, call by reference 등 다 찾아보며 고군분투했다. 그러다 push 연산 후 top++를 발견했고 top이 1 증가된 상태로 대기중이란 것을 알았다.

 

코드를 더 멋지게 만들어 제출하려했으나 알고리즘 스터디 깃헙에 푸시할 시간이 다가왔고 이대로 제출했다. 스프링 부트 팀프로젝트 중이라 이번주는 간단한 문제들만 풀고있지만 프로젝트가 끝나면 임계점(?)을 넘을 수 있는 골드 문제 혹은 프로그래머스 문제에 도전해봐야겠다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함