-
Baekjoon_9012_괄호Algorithm/_Baekjoon 2023. 5. 14. 18:51
문제주소: https://www.acmicpc.net/problem/9012
9012번: 괄호
괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고
www.acmicpc.net
괄호 문제는 다음과 같습니다.
문제를 읽어보면 괄호가 올바르게 구성이 되었는지 확인하는 문제입니다.
저는 문제를 다음과 같이 풀었습니다.
Python
import sys num_repeat: int = int(sys.stdin.readline()) # 반복할 수 입력 for i in range(num_repeat): check_result: int = 0 # 괄호를 판단해주는 값 input_bracket: str = sys.stdin.readline() # 괄호 입력 # 괄호 체크 for j, ele in enumerate(input_bracket): ## '(' 괄호가 입력되면 +1 '(' 괄호가 입력되면 -1 if ele == '(': check_result += 1 elif ele == ')': check_result -= 1 ## check_result가 음수가 된다면, 'NO'를 출력 if check_result < 0: print('NO') break ## 양수로 끝난다면 'NO'를 출력 if check_result > 0: print('NO') ## 끝까지 판단하고 check_result가 0이면 'YES' 출력 elif check_result==0: print('YES')
괄호를 판단해주는 값을 지정해주고 음수와 양수로 끝난다면 'NO'를 0으로 끝난다면 'YES'를 출력하도록 하였다.
C++ 도 같은 방식으로 풀었다.
C++
#include <iostream> #include <vector> using namespace std; int main() { ios::sync_with_stdio(0); cin.tie(NULL); char l_bracket = '('; char r_bracket = ')'; int num_repeat; cin >> num_repeat; for (int i = 0; i < num_repeat; i++) { int check_result = 0; string bracket; cin >> bracket; for (auto ele : bracket) { if (ele == l_bracket) check_result += 1; else if (ele == r_bracket) check_result -= 1; if (check_result < 0) { cout << "NO" << endl; break; } } if (check_result > 0) cout << "NO" << endl; else if (check_result == 0) cout << "YES" << endl; } }
'Algorithm > _Baekjoon' 카테고리의 다른 글
Baekjoon_10845_큐 (0) 2023.05.18 Baekjoon_1406_에디터 (0) 2023.05.17 Baekjoon_1874_스택 수열 (0) 2023.05.15 Baekjoon_9093_단어 뒤집기 (0) 2023.05.14 Baekjoon_10828_스택 (0) 2023.05.14