-
[백준 알고리즘] C++ | 0912번 괄호 더하기Algorithm 2022. 7. 6. 08:33
문제: https://www.acmicpc.net/problem/9012
#include <iostream> #include <string> #include <stack> using namespace std; int main(void) { int k; cin >> k; while (k > 0) { k--; string input; cin >> input; stack<char> st; string answer = "YES"; for (int i = 0; i < input.length(); i++) { //'('는 스택에 저장 if (input[i] == '(') { st.push(input[i]); } //')'가 나오면 스택에 저장된 '('와 짝이 맞는지 확인하고 pop else if (!st.empty() && input[i] == ')' && st.top() == '(') { st.pop(); } //위의 경우를 제외하고는 모두 vps가 아닌 상황이므로 종료(break) else { answer = "NO"; break; } } //'('와 ')'가 짝이 안 맞는 경우 '('가 모두 pop되지 않기 때문에 // 스택이 비지 않는다. 따라서 이 경우는 vps가 아니므로 "NO" if (!st.empty()) answer = "NO"; cout << answer << endl; } return 0; }
참고: 이전에 python으로 제출했던 풀이
num = int(input()) for i in range(num): data = input() arr = list(data) sum = 0 for i in arr: if i == "(": sum += 1 elif i == ')': sum -= 1 if sum < 0: print("NO") break if sum > 0: print("NO") elif sum == 0: print("YES")
'Algorithm' 카테고리의 다른 글
[프로그래머스] JavaScript | 올바른 괄호 (스택) (0) 2022.08.17 [프로그래머스] JavaScript | 숫자 문자열과 영단어 (0) 2022.08.15 [백준 알고리즘] C++ | 2669번 직사각형 네개의 합집합의 면적 구하기 (0) 2022.06.15 [백준] 2231번: 분해합(브루트포스) - Python (0) 2022.03.07 [백준] 2798번: 블랙잭(브루트포스) - Python (0) 2022.03.07