4949번: 균형잡힌 세상 (acmicpc.net)

 

4949번: 균형잡힌 세상

하나 또는 여러줄에 걸쳐서 문자열이 주어진다. 각 문자열은 영문 알파벳, 공백, 소괄호("( )") 대괄호("[ ]")등으로 이루어져 있으며, 길이는 100글자보다 작거나 같다. 입력의 종료조건으로 맨 마

www.acmicpc.net

 

 

#include <bits/stdc++.h>
using namespace std;
//균형잡힌 세상
int main() {
    string str;

    getline(cin, str);
    while (str != ".") {
        stack<char> bracket;
        int len = str.size();
        for (int i=0; i<len; i++) {
            if (str[i] == '(' || str[i] == '[') {
                bracket.push(str[i]);
            }
            else if (str[i] == ')' && !bracket.empty() && bracket.top() == '(') {
                bracket.pop();
            }
            else if (str[i] == ']' && !bracket.empty() && bracket.top() == '[') {
                bracket.pop();
            }
            else if (str[i] == ')' || str[i] == ']') {
                bracket.push('a');
                break;
            }
        }
        if (bracket.empty()) {
            printf("yes\n");
        }
        else {
            printf("no\n");
        }
        getline(cin, str);
    }
}

 

'정보올림피아드-KOI > BOJ' 카테고리의 다른 글

백준 2×n 타일링 2  (0) 2022.03.14
백준 꿀따기 21758번 (11점 )  (0) 2022.03.11
백준 소수 구하기 1929  (0) 2022.03.07
백준 토마토  (0) 2022.03.07
스택 Stack  (0) 2022.02.04

10828번: 스택 (acmicpc.net)

 

10828번: 스택

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

www.acmicpc.net

 

#include <bits/stdc++.h>
using namespace std;
//X정우 학생 
int main() {
   string cmd;
   int cnt, stack[10000] = {0,}, push;
   cin >> cnt;
   for (int i=0; i<cnt; i++) {
      cin >> cmd;
      if (cmd == "push") {
         cin >> push;
         for (int j=0; j<10000; j++) {
            if (stack[j] == 0) {
               stack[j] = push;
               break;
            }
         }
      }
      else if (cmd == "pop") {
         if (stack[0] == 0) {
            printf("-1\n");
         }
         else {
            for (int j=0; j<10000; j++) {
               if (stack[j] == 0) {
                  printf("%d\n", stack[j-1]);
                  stack[j-1] = 0;
                  break;
               }
            }
         }
      }
      else if (cmd == "size") {
         int cnt = 0;
         for (int j=0; j<10000; j++) {
            if (stack[j] != 0) {
               cnt++;
            }
            else {
               break;
            }
         }
         printf("%d\n", cnt);
      }
      else if (cmd == "empty") {
         if (stack[0] == 0) {
            printf("1\n");
         }
         else {
            printf("0\n");
         }
      }
      else if (cmd == "top") {
         if (stack[0] == 0) {
            printf("-1\n");
         }
         else {
            for (int j=0; j<10000; j++) {
               if (stack[j] == 0) {
                  printf("%d\n", stack[j-1]);
                  break;
               }
            }
         }
      }
   }
   
   return 0;
}

'정보올림피아드-KOI > BOJ' 카테고리의 다른 글

백준 소수 구하기 1929  (0) 2022.03.07
백준 토마토  (0) 2022.03.07
단어 뒤집기 2  (0) 2021.12.31
백준 : 가운데를 말해요 1655번  (0) 2020.05.10
BOJ 외판원 순회 2 - 10971번  (0) 2020.05.08

X혁 학생의 단어뒤집기2 성공 코드

 

#include <bits/stdc++.h>
using namespace std;
//단어 뒤집기 2
int main()
{
    stack<char> k,l;
    string a;
    int i,j,b;
    getline(cin,a);
    b=a.size();
    for(i=0;i<b;i++){
        if(a[i]=='<'){
            k.push(a[i]);
            while(!l.empty()){
                cout << l.top();
                l.pop();
            }
            cout << "<";
        }
        if(a[i]=='>'){
            k.pop();
            cout << ">";
        }
         if(!k.empty()&&a[i]!='<'){

            cout << a[i];
        }
         if(k.empty()&&a[i]!='>'){
            l.push(a[i]);
        }
    }


    return 0;
}

'정보올림피아드-KOI > BOJ' 카테고리의 다른 글

백준 토마토  (0) 2022.03.07
스택 Stack  (0) 2022.02.04
백준 : 가운데를 말해요 1655번  (0) 2020.05.10
BOJ 외판원 순회 2 - 10971번  (0) 2020.05.08
백준 - 프린터 큐 : 1966번  (0) 2020.04.26

+ Recent posts