728x90
목차.
문제
이번 문제는 Stack을 사용해서 풀 수 있지만 다른 방법으로도 간단하게 풀 수 있습니다.
코드
#include<iostream>
#include<stack>
#include<string>
using namespace std;
string valid(string s)
{
int cnt = 0;
for (char ch : s)
{
if (ch == '(')
cnt++;
else
cnt--;
if (cnt < 0)
return "NO";
}
if (cnt == 0)
return "YES";
else
return "NO";
}
int main()
{
int testCase;
cin >> testCase;
while (testCase--)
{
string str;
cin >> str;
cout << valid(str)<<'\n';
}
return 0;
}
입력받은 string(괄호)를 valid 함수의 매개변수로 전달해 줍니다.
valid 함수에서는 전달받은 string에서 '('이라면 cnt를 1 증가시키고 아니라면 1 감소시킵니다.
이때 1이 감소되어 0보다 작다면 잘못된 괄호이기 때문에 No를 return 시켜줍니다.
반복문이 끝난 뒤 cnt가 0이라면 정상적인 괄호, 아니라면 잘못된 괄호로 return 해주었습니다.
728x90
'코딩테스트' 카테고리의 다른 글
[C++][Stack] 백준 1406번 : 에디터 (0) | 2023.09.29 |
---|---|
[C++] 백준 1874번 : 스택 수열 (0) | 2023.09.29 |
[C++][Stack] 백준 10828번 : 스택(Stack) (0) | 2023.09.27 |
C++ : 최빈값 구하기 (0) | 2023.09.15 |
C++ : 분수의 덧셈 (0) | 2023.09.14 |