250x250
Notice
Recent Posts
Recent Comments
Link
반응형
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 스택
- string
- 리소스모니터링
- Calendar
- union_find
- map
- sql
- GC로그수집
- 힙덤프
- Union-find
- deque
- BFS
- alter
- date
- 큐
- dfs
- Properties
- 스프링부트
- html
- priority_queue
- math
- CSS
- spring boot
- NIO
- set
- List
- scanner
- JPA
- Java
- javascript
Archives
- Today
- Total
매일 조금씩
백준 4949번: 균형잡힌 세상 본문
728x90
반응형
스택관련 문제로
반례를 잘 찾아야하는 문제다.
< 주의 사항 >
- 열린 괄호와 닫힌 괄호가 만나게 되면 열린괄호를 pop한다.
- '(' 다음에는 ')', '[' 다음에는 ']' 가 와야한다. 예를 들어 "( [ ) ]"는 성립 될 수 없다.
- 닫는 괄호가 들어올 때 비어있거나, top이 짝이 맞는 열린괄호가 아닐 경우 불균형이다.
- 열린 괄호만 남아있게 되어도 불균형이다.
- 괄호가 아무것도 입력안되면 균형으로 간주한다.
#include <iostream>
#include <string>
#include <stack>
using namespace std;
string str;
int main(void) {
ios_base::sync_with_stdio(0);
cin.tie(0); //cin 실행속도 향상
while (1) {
getline(cin, str);
if (str == ".")
break;
stack<string> s;
bool balance = true;
for (int i = 0; i < str.length(); i++) {
if (str[i] == '(')
s.push("(");
else if (str[i] == ')') {
if (!s.empty()) {
if(s.top() == "(")
s.pop();
else {
balance = false;
break;
}
}
else {
balance = false;
break;
}
}
else if (str[i] == '[')
s.push("[");
else if (str[i] == ']') {
if (!s.empty()) {
if(s.top() == "[")
s.pop();
else {
balance = false;
break;
}
}
else {
balance = false;
break;
}
}
}
if (!balance || !s.empty())
cout << "no" << "\n";
else
cout << "yes" << "\n";
}
return 0;
}
728x90
반응형
'알고리즘' 카테고리의 다른 글
백준 18258번: 큐 2 (0) | 2020.04.07 |
---|---|
백준 1874번: 스택 수열 (0) | 2020.04.05 |
백준 9012번: 괄호 (0) | 2020.04.05 |
백준 10773번: 제로 (0) | 2020.04.05 |
백준 10828번: 스택 (0) | 2020.04.05 |