자료구조 및 알고리즘/백준
[백준 4949] 균형잡힌 세상
아기사우르스
2023. 2. 18. 01:31
728x90
못 푼 문제
다른 사람 풀이 참고
//백준4949 균형잡힌 세상
#include <iostream>
#include <string>
#include <stack>
using namespace std;
int main() {
while (true) {
string input;
getline(cin, input);
if (input == ".") {
break;
}
stack<char> s;
bool flag = 0;
for (int i = 0; i < input.length(); i++) {
char c = input[i];
if ((c == '(') || (c == '[')) {
s.push(c);
}
else if (c == ')') {
if (!s.empty() && s.top() == '(') {
s.pop();
}
else {
flag = 1;
break;
}
}
else if (c == ']') {
if (!s.empty() && s.top() == '[') {
s.pop();
}
else {
flag = 1;
break;
}
}
}
if (flag==0 && s.empty()) {
cout << "yes" << endl;
}
else {
cout << "no" << endl;
}
}
}
문자로 이뤄진 문자배열 문자열이라는 점을 이용한다!
문자열, 문자 비교 스킬
flag를 왜 써야할까-이거는 나도 좀 생각했는데 좀 더 구체화 해보자!
flag 쓰는 방법도 익히고!
flag 필요한 이유
닫는 괄호를 만났을 때 스택이 empty이거나 짝이 맞는 괄호가 top이 아닌 경우 yes일 수 없다.
바로 break 해주어야 함.
(안해주면 틀림)
내 풀이 스케치
+)짝이 맞으면 비게 되어 있다.
참고 문제 9012번 괄호
출처)
728x90