BRAKETS2 질문입니다 hsuser 스택을 이용한 symbol 매칭입니다. class Stack { private: char s[10001]; public: int top; Stack() { top=-1; } void push(char c) { top=top+1; s[top]=c; } char pop() { char c=s[top]; top=top-1; return c; } }; 매칭이 맞으면 1을 반환 아니면 0을반환 bool Brakets(char * b) { Stack S; char c; int i=0; while(b[i]!=0) { if(b[i]=='('||b[i]=='['||b[i]=='{') 열린 심볼일 경우 스택에 푸시 S.push(b[i]); else if(b[i]==')'||b[i]==']'||b[i]=='}') 닫힌 심볼일 경우 비교 팝 { if(S.top==-1) return 0; c=S.pop(); if(b[i]==')') { if(c!='(') return 0; } else if(b[i]==']') { if(c!='[') return 0; } else if(b[i]=='}') { if(c!='{') return 0; } } i++; } return 1; } 메인함수 int main() { char braket[10001]; bool YN[100]; //**YN이라는 배열에 결과값을 저장하여 YES or NO 출력** int num; cin>>num; for(int i=0;i<num;i++) { cin>>braket; YN[i]=Brakets(braket); } int j; for(j=0;j<num;j++) { if(YN[j]==1) cout<<"YES"<<endl; else cout<<"NO"<<endl; } return 0; } //제가봣을땐 별 이상없어 보이는데 계속 오답이 뜨네요 ㅠㅠ 11년 전
2개의 댓글이 있습니다. kwangswei {{} 와 같은 경우 처리가 안될 것 같군요~~ 11년 전 link hsuser 아 ~ 감사합니다 ㅠㅠ 11년 전 link 정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면 온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야 합니다. 현재 문제를 푸셨습니다.
hsuser
스택을 이용한 symbol 매칭입니다.
class Stack
{
private:
char s[10001];
public:
int top;
Stack()
{
top=-1;
}
};
매칭이 맞으면 1을 반환 아니면 0을반환
bool Brakets(char * b)
{
Stack S;
char c;
int i=0;
while(b[i]!=0)
{
if(b[i]=='('||b[i]=='['||b[i]=='{') 열린 심볼일 경우 스택에 푸시
S.push(b[i]);
else if(b[i]==')'||b[i]==']'||b[i]=='}') 닫힌 심볼일 경우 비교 팝
{
if(S.top==-1)
return 0;
c=S.pop();
if(b[i]==')')
{
if(c!='(')
return 0;
}
else if(b[i]==']')
{
if(c!='[')
return 0;
}
else if(b[i]=='}')
{
if(c!='{')
return 0;
}
}
i++;
}
return 1;
}
메인함수
int main()
{
char braket[10001];
bool YN[100]; //**YN이라는 배열에 결과값을 저장하여 YES or NO 출력**
int num;
cin>>num;
}
//제가봣을땐 별 이상없어 보이는데 계속 오답이 뜨네요 ㅠㅠ
11년 전