[백준 알고리즘]/[C++]
4949번 균형잡힌 세상 | Baekjoon BOJ 백준 4949 C++ 코드, 해설, 풀이
말하는펭귄
2021. 1. 26. 20:41
728x90
반응형
이번 포스팅은 백준 4949번 균형잡힌 세상입니다.
아래 url를 클릭하시면 백준 사이트에서 문제를 볼 수 있습니다.
4949번: 균형잡힌 세상
하나 또는 여러줄에 걸쳐서 문자열이 주어진다. 각 문자열은 영문 알파벳, 공백, 소괄호("( )") 대괄호("[ ]")등으로 이루어져 있으며, 길이는 100글자보다 작거나 같다. 입력의 종료조건으로 맨 마
www.acmicpc.net
기본 알고리즘
스택 stack
참고
line 18, line 29-32, line 38-41
flag 필요한 이유
닫는 괄호를 만났을 때 스택이 empty이거나 짝이 맞는 괄호가 top이 아닌 경우 yes일 수 없다.
바로 break 해주어야 함.
(안해주면 틀림)
전체 코드
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
//백준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;
}
}
}
|
cs |
728x90
반응형