일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- LEVEL2
- Silver
- 프로그래머스
- dirtyflag pattern
- programmers
- 3D RPG
- 8-Puzzle
- BOJ
- 프로세스 상태
- Zenject
- two pointer
- Flyweight Pattern
- Project
- level1
- BFS
- algorithm
- solid 원칙
- level3
- PrefixSum
- stack
- Gold
- Euclidean
- Unity
- trie
- knapsack Problem
- binary search
- Modern C++
- effective C++
- SWEA
- Bronze
Archives
- Today
- Total
Patrick's Devlog
[BOJ/C++] 괄호(9012번) 본문
1. 문제 개요
https://www.acmicpc.net/problem/9012
9012번: 괄호
괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고
www.acmicpc.net
1-1. 설명
괄호 문자열은 두 개의 괄호 기호인 '('와 ')' 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(VPS)이라 한다. 한 쌍의 괄호 기호로 된 "()" 문자열은 기본 VPS라 부른다. x가 VPS라고 가정할 때 이것을 하나의 괄호에 넣은 새로운 문자열 "(x)"도 VPS가 된다. 그리고 두 VPS x와 y를 접합 시킨 새로운 문자열 xy도 VPS가 된다. 우리는 입력으로 주어진 괄호 문자열이 VPS인지 아닌지 판단해서 그 결과를 YES와 NO로 나타내야 한다.
1-2. 제한 사항
- T개의 테스트 데이터로 주어짐.
- T는 첫째줄에 입력, 그 외의 괄호 쌍은 두번째줄부터 입력
- 괄호 문자열의 길이는 2이상 50이하
2. 구현
2-1. 풀이
stack을 통해 '('일 땐 push를 통해 저장한 후, ')'가 나오면 pop을 한다. 여기서 ')'가 먼저 나오는 경우를 생각하여 이럴 경우에는 NO가 출력되고, 그 외에 모든 문자를 확인한 후 stack이 비어있으면 YES가 출력되게끔 한다.
2-2. 코드
#include <iostream>
#include <stack>
using namespace std;
int main(void) {
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int N, flag;
string input;
cin >> N;
for (int i = 0; i < N; i++) {
cin >> input;
flag = 0;
stack<char> parenthesis;
for (char ch : input) {
if (ch == '(') parenthesis.push(ch);
else if (ch == ')') {
if (!parenthesis.empty()) parenthesis.pop();
else {
cout << "NO" << "\n";
flag = 1;
break;
}
}
}
if (flag == 0) {
if (parenthesis.empty()) cout << "YES" << "\n";
else cout << "NO" << "\n";
}
}
}
'Algorithm > Algorithms Practice' 카테고리의 다른 글
[BOJ/C++] 안전 영역(2468번) (0) | 2022.07.12 |
---|---|
[BOJ/C++] 점수 집계(9076번) (0) | 2022.07.07 |
[BOJ/C++] 달팽이는 올라가고 싶다(2869번) (0) | 2022.06.30 |
[BOJ/C++] 수 찾기(1920번) (0) | 2022.06.29 |
[BOJ/C++] 행복한지 슬픈지(10769번) (0) | 2022.06.28 |