Dolphins의 HelloWorld
[백준]Baekjoon4949(Stack) 본문
이 문제에서 가장 중요한 것은 이 문제가 스택을 이용하는 문제라는 것임을 파악하는 것이다.
스택을 이용하지 않는다면
"( [ ) ]" 이런 문자열이 나왔을 때 괄호가 대응되지 않는다는것을 나타내기가 어렵다.
그러나 스택을 쓴다면 스택의 가장 맨 위에있는 괄호가 가장 최근에 쓰여진 괄호이기 때문에
스택의 맨위에 있는것과 새롭게 들어가는 문자를 비교하면서 괄호가 대응되는지
판단하는것이 용이하다.
#include <iostream> #include <stack> #include <string> using namespace std; int main() { string s; while (getline(cin, s)) { stack<char> stk; bool b = true; if (s[0] == '.') break; for (int i = 0; i < s.length(); i++) { if (s[i] == '(' || s[i] == '[') stk.push(s[i]); else if (s[i] == ')') { if (stk.size() != 0 && stk.top() == '(') { stk.pop(); } else { b = false; break; } } else if (s[i] == ']') { if (stk.size() != 0 && stk.top() == '[') stk.pop(); else { b = false; break; } } } if (!b || stk.size() != 0) cout << "no" << '\n'; else cout << "yes" << '\n'; } }
'Algorithm > baekjoon문제풀이' 카테고리의 다른 글
[백준]Baekjoon1463(Dynamic Programming) (0) | 2018.07.09 |
---|---|
[백준]Baekjoon11279(Priority_queue) (0) | 2018.07.04 |
[백준]Baekjoon1076(map) (0) | 2018.07.01 |
[백준]Baekjoon10866(Deque) (0) | 2018.06.28 |
[백준]Baekjoon1966(Queue) (0) | 2018.06.28 |
Comments