mint* 2023. 2. 27. 21:17
728x90

알고리즘 따로 공부 외에도 스터디를 통해 알고리즘 공부를 하기로 했다!

 

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

 

10828번: 스택

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

www.acmicpc.net

 

#include <bits/stdc++.h>
using namespace std;
#define stack aaa
int n, stack[100004], pos=-1; //pos: top 가리킴(원소 없을때 -1)
string s1,s2;
int main(){
    ios_base::sync_with_stdio(0); cin.tie(NULL); cout.tie(NULL);
    //1. 입력받기
    cin >> n;
    //2. 명령어 처리
    while(n--){ //n개의 명령어에 대해
        cin >> s1;
        if(s1=="push"){
            cin>>s2; 
            pos++;
            stack[pos]=stoi(s2);
        } 
        else if(s1=="pop"){
            if(pos==-1) cout <<"-1\n"; //스택이 비었을때 -1
            else {
                cout << stack[pos]<<"\n"; //top값 반환
                pos--;
            }
        }
        else if(s1=="size"){
            cout << pos+1 <<"\n"; //0부터 시작하므로 크기는 pos+1
        }
        else if(s1=="empty"){
            if(pos==-1) cout << "1\n";
            else cout << "0\n";
        }
        else if(s1=="top"){
            if(pos==-1)cout <<"-1\n";
            else cout << stack[pos]<<"\n";
        }
    }

}

 

리스트를 통해 스택을 구현했다.

쉬운 문제지만 문제 조건을 제대로 안읽어서 한번 틀렸다 ㅠㅠ 문제 조건 제대로 읽기!!

 

728x90