문제
괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’와 ‘)’ 만으로 구성되어 있는 문자열이다.
이 괄호 문자열을 입력받고 ‘(’ 와 ‘)’ 가 모두 맞물리면 "YES" 틀리면 "NO"를 출력하면 되는 문제이다
문제 해결을 위한 준비물
- string - 문자열을 입력받아야 함
- ranged-based for문 - 입력된 문자열을 문자 하나하나 조회하기 위함
- stack - 괄호 문자열이 모두 맞물린 지 확인하기 위함
완성된 코드
#include <iostream>
#include <string>
#include <stack>
using namespace std;
int main()
{
int count;
cin >> count;
for(int i = 0; i < count; i++)
{
string temp;
stack<char> bracketSt;
cin >> temp;
for(char& bracket : temp)
{
if(bracket == '(')
bracketSt.push(bracket);
else
{
if(!bracketSt.empty())
bracketSt.pop();
else
{
bracketSt.push(bracket);
break;
}
}
}
string message = bracketSt.empty() ? "YES" : "NO";
cout << message << endl;
}
return 0;
}
풀이
풀이..라고 할 게 없다
그저 스택을 잘 활용했다는 게 풀이인 것이다
처음엔 스택 대신 정수를 활용해서 괄호 문자를 확인했고, 스택을 썼어도 그저 저장공간으로써 비효율적으로 사용했다 아직은 한참 부족한 것 같다
'프로그래밍 문제집 > 백준' 카테고리의 다른 글
1152번-단어의 개수 (0) | 2022.01.20 |
---|---|
1463번-1로 만들기 (0) | 2022.01.19 |
12865번-평범한 배낭 (0) | 2022.01.17 |
10773번-제로 (0) | 2022.01.17 |
1920번-수 찾기 (0) | 2022.01.17 |