풀이
주어진 문자열의 괄호쌍이 맞는지확인하는 문제이다.
- 변수 t를 입력받는다. t는 이후에 입력될 문자열의 개수를 나타낸다.
- bool isValid = true;를 통해 문자열의 괄호 짝이 맞는지를 저장하는 변수를 초기화합니다.
- str[i]가 '('인 경우, 스택에 '('를 push한다.
- str[i]가 ')'인 경우, 스택이 비어있거나 top이 '('가 아닌 경우, isValid를 false로 변경하고 break한다.
- 그렇지 않은 경우, 스택에서 '('를 pop한다.
- for문이 끝난 후, 스택이 비어있지 않은 경우, isValid를 false로 변경한다.
- isValid가 true인 경우, "YES"를 출력하고 그렇지 않은 경우, "NO"를 출력한다.
코드
#include <iostream>
#include <stack>
#include <string>
using namespace std;
int main() {
int t;
cin >> t;
while(t--) {
string str;
stack<char> stack;
bool isValid = true;
cin >> str;
for (int i = 0; i < str.size(); i++) {
if (str[i] == '(') {
stack.push(str[i]);
}
else if (str[i] == ')') {
if (stack.empty() || stack.top() != '(') {
isValid = false;
break;
}
else
stack.pop();
}
}
if (!stack.empty())
isValid = false;
if (isValid)
cout << "YES" << '\n';
else
cout << "NO" << '\n';
}
return 0;
}
https://www.acmicpc.net/problem/9012
'Koala - 10기 > 코딩테스트 준비 스터디' 카테고리의 다른 글
[백준/Python] 15903 카드 합체 놀이 (0) | 2023.05.06 |
---|---|
[백준/C++] 5430 : AC (1) | 2023.05.06 |
[백준 / python] 17298. 오큰수 (0) | 2023.05.05 |
[Python/백준] 2346 : 풍선 터트리기 (0) | 2023.05.04 |
[백준/Python] 9205번 맥주마시면서 걸어가기 (0) | 2023.05.03 |