백준

백준 4949번 c++

solfa 2023. 7. 6. 16:24

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

 

4949번: 균형잡힌 세상

각 문자열은 마지막 글자를 제외하고 영문 알파벳, 공백, 소괄호("( )"), 대괄호("[ ]")로 이루어져 있으며, 온점(".")으로 끝나고, 길이는 100글자보다 작거나 같다. 입력의 종료조건으로 맨 마지막에

www.acmicpc.net

9012 문제에서 대괄호만 추가 된 버전인 듯 하다

9012번 문제 풀이 링크 첨부

https://5ffthewall.tistory.com/13

 

#include <iostream>
#include <stack>
using namespace std;

int main()
{
    string a;

    while(1)
    {
        stack<char> s;

        getline(cin, a);

        if (a == ".") 
            break;

        for(int j = 0 ; j<a.length() ; j++){
            if(a[j]=='(')
                s.push('(');
            else if (a[j]==')')
                if(!s.empty() && s.top()=='(')
                    s.pop();
                else
                    s.push(')');
            
            else if(a[j]=='[')
                s.push('[');
            
            else if(a[j]==']')
                if(!s.empty() && s.top()=='[')
                    s.pop();
                else
                    s.push(']');
        }

        if(s.empty())
            cout<<"yes"<<endl;
        else
            cout<<"no"<<endl;

        while(!s.empty())
            s.pop();
    }
}

 

문제 푸는 포인트

  • 한 줄을 어떻게 받아 올 것인가 - getline을 쓰면 된다! 반복문으로 getline을 받아오는데 조건식으로 온점이 나오면 끝나게 함

+ getline 함수란?

 - 입력된 문자열을 받아오는 함수로 cin과 scanf와 다르게 공백도 받아올 수 있음

   char형(cin.getline())과 string형(getline(string)) 두 가지가 있음

728x90

'백준' 카테고리의 다른 글

백준 2178번 C++  (0) 2023.07.18
백준 1260번 C++ 배열 사용  (0) 2023.07.06
백준 1935번 C++ 배열 사용  (0) 2023.07.06
백준 9012번 c++  (0) 2023.06.25
백준 2164 c++  (0) 2023.01.17