fork download
  1. #include <iostream>
  2. #include <string>
  3. #include <algorithm>
  4. using namespace std;
  5.  
  6. int main(void)
  7. {
  8. while (1)
  9. {
  10. string arr; //원본
  11. string brr; //괄호만
  12. getline(cin, arr, '.'); //'.'이 입력되는 순간까지만 입력
  13. bool flag = true; //true라면 yes, false라면 no
  14. if (arr.empty()) break; //아무것도 없다면 종료
  15.  
  16. for (int i = 0; i < arr.length(); i++)
  17. {
  18. if (arr[i] == '(' || arr[i] == '[') //열린 괄호는 전부 push
  19. brr.push_back(arr[i]);
  20. else if (arr[i] == ']')
  21. {
  22. if (brr.empty() || brr[brr.length() - 1] != '[') //비어있거나 열린 대괄호가 아니라면 비교 중지
  23. {
  24. flag = false;
  25. break;
  26. }
  27. else brr.pop_back();
  28. }
  29. else if (arr[i] == ')')
  30. {
  31. if (brr.empty() || brr[brr.length() - 1] != '(') //비어있거나 열린 소괄호가 아니라면 비교 중지
  32. {
  33. flag = false;
  34. break;
  35. }
  36. else brr.pop_back();
  37. }
  38. }
  39. if (flag && brr.empty()) cout << "yes" << endl; //brr에 괄호가 없고 중간에 정지되지 않았다면 yes
  40. else cout << "no" << endl;
  41. cin.ignore(); //입력 버퍼 비워주기
  42. }
  43. }
Success #stdin #stdout 0s 5516KB
stdin
So when I die (the [first] I will see in (heaven) is a score list).
[ first in ] ( first out ).
Half Moon tonight (At least it is better than no Moon at all].
A rope may form )( a trail in a maze.
Help( I[m being held prisoner in a fortune cookie factory)].
([ (([( [ ] ) ( ) (( ))] )) ]).
 .
.
stdout
yes
yes
no
no
no
yes
yes