반응형
https://www.acmicpc.net/problem/4949
stack을 사용하여 문자열을 다뤄보는 구현문제였습니다.
Code:
#include <iostream>
#include <string>
#include <stack>
using namespace std;
string getBracketStr(string sentance){
string tmp="";
for(int i = 0; i<sentance.size(); i++){
if(sentance[i]=='[' || sentance[i]==']' ||
sentance[i]=='(' || sentance[i]==')')
tmp+=sentance[i];
}
return tmp;
}
string isBalanced(string bracketStr){
stack <char> s;
for(int i = 0; i<bracketStr.size(); i++){
if(bracketStr[i]=='(' || bracketStr[i]=='[') s.push(bracketStr[i]);
else{
if(!s.size()) return "no\n";
if(s.top()=='(' && bracketStr[i]==')' ||
s.top()=='[' && bracketStr[i]==']'
) s.pop();
else return "no\n";
}
}
if(!s.size()) return "yes\n";
return "no\n";
}
int main(){
while(1){
string sentance;
string bracketStr;
getline(cin,sentance);
if(sentance==".") break;
bracketStr = getBracketStr(sentance);
cout << isBalanced(bracketStr);
}
}
'Algorithm > String' 카테고리의 다른 글
(C++) - 백준(BOJ) 5525번 : IOIOI 답 (0) | 2020.09.16 |
---|---|
(Python) - 백준(BOJ) 1541번 : 잃어버린 괄호 답 (0) | 2020.09.14 |
(C++) - 백준(BOJ) 2562번 : ACM 호텔 답 (0) | 2020.07.24 |
(C++) - 백준(BOJ) 1764번 : 듣보잡 (0) | 2020.01.06 |
(C++) - 백준(BOJ)코딩 10769번 : 행복한지 슬픈지 답 (0) | 2017.04.15 |