728x90
0. [c++] 백준 - |
https://www.acmicpc.net/problem/4949
1. 풀이 |
괄호의 쌍이 맞는지 스택을 활용해 검사하였다.
2. 소스코드 |
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 55 56 57 58 59 60 61 62 63 64 65 66 | #include<iostream> #include<stack> #include<string> using namespace std; stack<int> st; int main() { ios_base::sync_with_stdio(0); cin.tie(0); //char temp[101]; string S; while (1) { ////한줄 입력 받아오자. //cin.getline(temp, 100, '\n'); //if (temp[0] == '.' && temp[1] == NULL) // break; ////string으로 변환 //string S(temp); getline(cin, S); if (S.length() == 1 && S[0] == '.') break; //스택을 초기화한다. while (!st.empty()) st.pop(); //S를 순회하면서 개행문자('[(')를 만나면 스택에 넣어주고, 닫는 부분에서 짝이 맞는지 확인한다. //짝이 맞지 않는다면, break; bool flag = true; for (int i = 0; i < S.size(); i++) { if (S[i] == '(') st.push(1); else if (S[i] == '[') st.push(2); else if (S[i] == ')') { if (!st.empty() && st.top() == 1) st.pop(); else { flag = false; break; } } else if (S[i] == ']') { if (!st.empty() && st.top() == 2) st.pop(); else { flag = false; break; } } } if (flag && st.empty()) cout << "yes" << endl; else cout << "no" << endl; } return 0; } | cs |
3. 참고 |
질문이나 지적 있으시면 댓글로 남겨주세요~
도움 되셨으면 하트 꾹!
'<백준> > |c++| easy' 카테고리의 다른 글
[c++] 백준 1920 - 수 찾기(이진 탐색, 이분 탐색) (0) | 2019.07.03 |
---|---|
[c++] 백준 2096 - 내려가기(슬라이딩 윈도우) (0) | 2019.07.02 |
[c++] 백준 10799 - 쇠막대기(queue의 활용) (0) | 2019.06.12 |
[c++] 백준 11650 - 좌표 정렬하기(vector 정렬) (0) | 2019.06.12 |
[c++] 백준 1085 - 직사각형에서 탈출(단순 if문) (0) | 2019.06.12 |