728x90
반응형
https://www.acmicpc.net/problem/4949
4949번: 균형잡힌 세상
하나 또는 여러줄에 걸쳐서 문자열이 주어진다. 각 문자열은 영문 알파벳, 공백, 소괄호("( )") 대괄호("[ ]")등으로 이루어져 있으며, 길이는 100글자보다 작거나 같다. 각 줄은 마침표(".")로 끝난다
www.acmicpc.net
#include <iostream>
#include <stack>
#include <string>
using namespace std;
int main() {
while(true){
string str;
getline(cin, str);
if(str == ".") break;
stack<char> st;
string ans = "yes";
for(int i = 0; i < str.length(); i++){
if(str[i] == '(') st.push('(');
else if(str[i] == '[') st.push('[');
else if(str[i] == ')'){
if(st.empty() || st.top() == '['){
ans = "no";
break;
} else{
st.pop();
}
}
else if(str[i] == ']'){
if(st.empty() || st.top() == '('){
ans = "no";
break;
} else{
st.pop();
}
}
}
if(!st.empty()) ans = "no";
cout << ans << endl;
}
return 0;
}
"짝을 이루는 두 괄호가 있을 때, 그 사이에 있는 문자열도 균형이 잡혀야 한다."는 조건이 있으므로 여는 괄호가 나올 때 스택에 넣고, 닫는 괄호가 나올 때 스택의 top에 있는 괄호의 종류를 확인해야 한다.
스택 문제를 풀 때마다 까먹는건데 마지막에 스택에 남아있는 괄호가 있는지도 꼭 확인하기!!
728x90
반응형
'Algorithm > BAEKJOON' 카테고리의 다른 글
[BOJ] 1863번 스카이라인 쉬운거 (C++) (0) | 2022.07.31 |
---|---|
[BOJ] 16401번 과자 나눠주기 (C++) (0) | 2022.07.31 |
[BOJ] 2805번 나무 자르기 (C++) (0) | 2022.07.29 |
[BOJ] 16173번 점프왕 쩰리 (Small) (C++) (0) | 2022.07.28 |
[BOJ] 2960번 에라토스테네스의 체 (C++) (0) | 2022.07.02 |