• toc {:toc}

๋ฌธ์ œ

์„ธ๊ณ„๋Š” ๊ท ํ˜•์ด ์ž˜ ์žกํ˜€์žˆ์–ด์•ผ ํ•œ๋‹ค. ์–‘๊ณผ ์Œ, ๋น›๊ณผ ์–ด๋‘  ๊ทธ๋ฆฌ๊ณ  ์™ผ์ชฝ ๊ด„ํ˜ธ์™€ ์˜ค๋ฅธ์ชฝ ๊ด„ํ˜ธ์ฒ˜๋Ÿผ ๋ง์ด๋‹ค.

์ •๋ฏผ์ด์˜ ์ž„๋ฌด๋Š” ์–ด๋–ค ๋ฌธ์ž์—ด์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ๊ด„ํ˜ธ๋“ค์˜ ๊ท ํ˜•์ด ์ž˜ ๋งž์ถฐ์ ธ ์žˆ๋Š”์ง€ ํŒ๋‹จํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์งœ๋Š” ๊ฒƒ์ด๋‹ค.

๋ฌธ์ž์—ด์— ํฌํ•จ๋˜๋Š” ๊ด„ํ˜ธ๋Š” ์†Œ๊ด„ํ˜ธ(โ€()โ€) ์™€ ๋Œ€๊ด„ํ˜ธ(โ€[]โ€œ)๋กœ 2์ข…๋ฅ˜์ด๊ณ , ๋ฌธ์ž์—ด์ด ๊ท ํ˜•์„ ์ด๋ฃจ๋Š” ์กฐ๊ฑด์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

  • ๋ชจ๋“  ์™ผ์ชฝ ์†Œ๊ด„ํ˜ธ(โ€(โ€œ)๋Š” ์˜ค๋ฅธ์ชฝ ์†Œ๊ด„ํ˜ธ(โ€)โ€œ)์™€๋งŒ ์ง์„ ์ด๋ค„์•ผ ํ•œ๋‹ค.
  • ๋ชจ๋“  ์™ผ์ชฝ ๋Œ€๊ด„ํ˜ธ(โ€[โ€œ)๋Š” ์˜ค๋ฅธ์ชฝ ๋Œ€๊ด„ํ˜ธ(โ€]โ€œ)์™€๋งŒ ์ง์„ ์ด๋ค„์•ผ ํ•œ๋‹ค.
  • ๋ชจ๋“  ์˜ค๋ฅธ์ชฝ ๊ด„ํ˜ธ๋“ค์€ ์ž์‹ ๊ณผ ์ง์„ ์ด๋ฃฐ ์ˆ˜ ์žˆ๋Š” ์™ผ์ชฝ ๊ด„ํ˜ธ๊ฐ€ ์กด์žฌํ•œ๋‹ค.
  • ๋ชจ๋“  ๊ด„ํ˜ธ๋“ค์˜ ์ง์€ 1:1 ๋งค์นญ๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค. ์ฆ‰, ๊ด„ํ˜ธ ํ•˜๋‚˜๊ฐ€ ๋‘˜ ์ด์ƒ์˜ ๊ด„ํ˜ธ์™€ ์ง์ง€์–ด์ง€์ง€ ์•Š๋Š”๋‹ค.
  • ์ง์„ ์ด๋ฃจ๋Š” ๋‘ ๊ด„ํ˜ธ๊ฐ€ ์žˆ์„ ๋•Œ, ๊ทธ ์‚ฌ์ด์— ์žˆ๋Š” ๋ฌธ์ž์—ด๋„ ๊ท ํ˜•์ด ์žกํ˜€์•ผ ํ•œ๋‹ค.

์ •๋ฏผ์ด๋ฅผ ๋„์™€ ๋ฌธ์ž์—ด์ด ์ฃผ์–ด์กŒ์„ ๋•Œ ๊ท ํ˜•์žกํžŒ ๋ฌธ์ž์—ด์ธ์ง€ ์•„๋‹Œ์ง€๋ฅผ ํŒ๋‹จํ•ด๋ณด์ž.

์ž…๋ ฅ

ํ•˜๋‚˜ ๋˜๋Š” ์—ฌ๋Ÿฌ์ค„์— ๊ฑธ์ณ์„œ ๋ฌธ์ž์—ด์ด ์ฃผ์–ด์ง„๋‹ค. ๊ฐ ๋ฌธ์ž์—ด์€ ์˜๋ฌธ ์•ŒํŒŒ๋ฒณ, ๊ณต๋ฐฑ, ์†Œ๊ด„ํ˜ธ(โ€( )โ€) ๋Œ€๊ด„ํ˜ธ(โ€[ ]โ€œ)๋“ฑ์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์œผ๋ฉฐ, ๊ธธ์ด๋Š” 100๊ธ€์ž๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๋‹ค. ๊ฐ ์ค„์€ ๋งˆ์นจํ‘œ(โ€.โ€œ)๋กœ ๋๋‚œ๋‹ค.

์ž…๋ ฅ์˜ ์ข…๋ฃŒ์กฐ๊ฑด์œผ๋กœ ๋งจ ๋งˆ์ง€๋ง‰์— ์  ํ•˜๋‚˜(โ€.โ€œ)๊ฐ€ ๋“ค์–ด์˜จ๋‹ค.

์ถœ๋ ฅ

๊ฐ ์ค„๋งˆ๋‹ค ํ•ด๋‹น ๋ฌธ์ž์—ด์ด ๊ท ํ˜•์„ ์ด๋ฃจ๊ณ  ์žˆ์œผ๋ฉด โ€œyesโ€๋ฅผ, ์•„๋‹ˆ๋ฉด โ€œnoโ€๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

์ถœ์ฒ˜:https://www.acmicpc.net/problem/4949

ํ’€์ด

์ˆ˜์‹ ๊ด„ํ˜ธ ์Œ์œผ๋กœ ์Œ์ด ๋งž๋Š” ๊ด„ํ˜ธ๋Š” ์Šคํƒ์—์„œ ์ง€์›Œ๋ฒ„๋ฆฐ๋‹ค.

(์™€ [๋Š” ์Šคํƒ์— ๊ณ„์† ์ €์žฅ

)์™€ ]๋Š” ์ง์ด ๋งž๋Š”์ง€ ํ™•์ธ ๋˜๋Š” (, [๋ณด๋‹ค ๋จผ์ € ๋‚˜์˜ค๋ฉด ์•ˆ๋œ๋‹ค.

C++์—์„œ์˜ ์ž…๋ ฅ

cin๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ string์— ์ž…๋ ฅ์„ ํ•œ๋‹คํ•˜๋”๋ผ๋„ ๊ฐœํ–‰๋ฌธ์ž(\nโ€ฆ)๊ฐ€ ์žˆ๋‹ค๋ฉด ๊ทธ ์ด์ „๊นŒ์ง€๋งŒ ์ž…๋ ฅ์„ ๋ฐ›๋Š”๋‹ค.

๊ฐœํ–‰๋ฌธ์ž๋ฅผ ํฌํ•จํ•œ ์ค„ ์ „์ฒด๋ฅผ ์ž…๋ ฅ๋ฐ›๊ธฐ ์œ„ํ•ด์„œ๋Š” getlineํ•จ์ˆ˜๋ฅผ ์จ์•ผ ํ•œ๋‹ค.

(getline์ฐธ๊ณ : https://kyu9341.github.io/C-C/2020/01/17/C++getline()/)

๋˜ํ•œ ์Šคํƒ์ด ๊ณ„์†ํ•ด์„œ ์ดˆ๊ธฐํ™”๋˜์–ด์•ผ ํ•˜๊ธฐ์— ์Šคํƒ์„ ์–ธ์ด while์•ˆ์— ์žˆ์–ด์•ผ ํ•จ์„ ์ฃผ์˜ํ•˜์ž

#include <bits/stdc++.h>
 
using namespace std;
 
int main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
    while(true){
        bool isOK = true;
        string str;
        getline(cin, str);
        if(str == ".") break;
        stack<char> s;              // ์Šคํƒ์ด while์•ˆ์— ์žˆ์–ด์•ผ ์ดˆ๊ธฐํ™”๋จ
        for(auto c : str){
            if(c == '(' || c == '['){
                s.push(c);
            }
            else if(c == ')'){
                if(s.empty() || s.top() != '('){
                    isOK = false;
                    break;
                }
                s.pop();
            }
            else if(c == ']'){
                if(s.empty() || s.top() != '['){
                    isOK = false;
                    break;
                }
                s.pop();
            }
        }
        if(s.empty() == false) isOK = false;
        if(isOK) cout << "yes\n";
        else cout << "no\n";
    }
 
    return 0;
}