[백준 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
'자료구조 및 알고리즘 > 백준' 카테고리의 다른 글
[백준 11866번] 요세푸스 문제 0 (0) | 2023.02.25 |
---|---|
[백준 9012번] 괄호 (0) | 2023.02.18 |
[백준 12605] 단어순서 뒤집기 (1) | 2023.02.18 |
[백준 17608]막대기 문제 최댓값 갱신 원리 및 논리 파악하기! (0) | 2023.02.16 |
백준 C++ 스킬) 문자열 비교하기 (0) | 2023.02.03 |