아, 짜증나. . . 10분 만에 풀었는데 컴파일 할 때 자꾸 안 된다고 하셔서 부담이 컸어요. . . 문제를 찾는 데 40분. 먼저 제가 쓴 답변을 보겠습니다.
#include<bits/stdc++.h>
using namespace std;
int main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
while(true){
string s;
getline(cin, s);
stack<char> stk;
bool check = true;
if(s==".") break;
for(int i = 0; i < s.size(); i++){
if(s(i) == '(' || s(i) == '(')
stk.push(s(i));
if(s(i) == ')'){
if(!
stk.empty()){
if(stk.top()=='(')
stk.pop();
else {
check = false;
break;
}
}
else {
check = false;
break;
}
}
if(s(i) == ')'){
if(!
stk.empty()){
if(stk.top() == '(')
stk.pop();
else {
check = false;
break;
}
}
else {
check = false;
break;
}
}
}
if(!
stk.empty())
check = false;
if(check == true)
cout << "yes\n";
else if(check == false)
cout << "no\n";
}
return 0;
}
그럼 이전에는 왜 틀렸을까? 마지막으로 for 문을 빠져나온 후 스택이 비어있는지 판단하는 if(!
stk.empty()) 코드를 for 문에 넣으면 자꾸 실수를 하게 되는데… 하!
!
!
!
!
!
짜증난