문제 |
4949번: 균형잡힌 세상
각 문자열은 마지막 글자를 제외하고 영문 알파벳, 공백, 소괄호("( )"), 대괄호("[ ]")로 이루어져 있으며, 온점(".")으로 끝나고, 길이는 100글자보다 작거나 같다. 입력의 종료조건으로 맨 마지막에
www.acmicpc.net
코드 |
#include <iostream>
#include <stack>
using namespace std;
bool isBalanced(const string &s) {
stack<char> st;
for (char c: s) {
switch (c) {
case '(':
case '[':
st.emplace(c);
break;
case ')':
if (!st.empty() && st.top() == '(') st.pop();
else return false;
break;
case ']':
if (!st.empty() && st.top() == '[') st.pop();
else return false;
break;
default:
break;
}
}
return st.empty();
}
int main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
string s;
getline(cin, s);
while (s != ".") {
cout << ((isBalanced(s)) ? "yes" : "no") << '\n';
getline(cin, s);
}
return 0;
}
설명 |
여는 괄호를 만나면 스택에 넣고, 닫는 괄호를 만나면 여는 괄호가 스택의 top에 있는지 확인한다.
'PS > BOJ' 카테고리의 다른 글
[C++] BOJ (백준) 9012 : 괄호 (0) | 2023.03.01 |
---|---|
[C++] BOJ (백준) 7568 : 덩치 (0) | 2023.03.01 |
[C++] BOJ (백준) 4153 : 직각삼각형 (0) | 2023.03.01 |
[C++] BOJ (백준) 2869 : 달팽이는 올라가고 싶다 (0) | 2023.03.01 |
[C++] BOJ (백준) 2839 : 설탕 배달 (0) | 2023.03.01 |