ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 1218. 괄호 짝짓기 풀이
    알고리즘/SW Expert Academy 2020. 3. 4. 19:34

     

    이번에 풀어볼 문제는 괄호 짝짓기이다. 

     

    알고리즘 문제는 간단하게 풀이만 적도록 하려고 한다.

     

    대충 이러한 문제이다.

     

     

    * 이번 문제를 풀면서 중요하게 기억해야할 내용 *

    1. stack 사용법과 다음 테스트 케이스를 위해 stack을 비워줘야함

     

    2. 어떤식으로 탐색을 진행할 것인지 파악

    -> 한쪽 형태의 모양을 스택에 우선 넣고나서 비교

     

    3. 가장 중요한건 문제를 제대로 파악하는 것 

       -> 단순히 짝만 맞추는 것이 아니다. 문제에는 상세히 설명하지 않아서 안나왔지만

           가장 처음과 마지막은 괄호는 항상 '('  ')' 이런식으로 닫는 형태여야하며

           ')'  '(' 이렇게 는 자릴 바꾸면 한쌍이겠지만 문제에서는 한쌍으로 인정하지 않는다...

     

    #include <iostream>
    #include <stack>
    
    using namespace std;
    
    int main() {
        for(int a=1; a<=10; a++){
            stack<char>s;
            int count;
            string str;
            cin >> count;
            cin >> str;
            for(int i=0; i<str.length(); i++){
                if(str[i]=='{' || str[i]=='[' || str[i]=='(' || str[i]=='<')
                    s.push(str[i]);
                else if(s.top()=='{' && str[i]=='}')
                    s.pop();
                else if(s.top()=='[' && str[i]==']')
                    s.pop();
                else if(s.top()=='(' && str[i]==')')
                    s.pop();
                else if(s.top()=='<' && str[i]=='>')
                    s.pop();
                else
                    s.push(str[i]);
            }
            if(!s.empty())
                cout << "#" << a << " " << "0" << endl;
            else
                cout << "#" << a << " " << "1" << endl;
        }
        return 0;
    }
    

    '알고리즘 > SW Expert Academy' 카테고리의 다른 글

    1226.미로1 & 1227.미로2  (0) 2020.03.26
    1225. 암호생성기  (0) 2020.03.24
    1224.계산기3  (0) 2020.03.24
    1223.계산기2  (0) 2020.03.23
    1222.계산기1  (0) 2020.03.23
    1218. 괄호 짝짓기 풀이  (0) 2020.03.04

    댓글 0

Designed by Tistory.