728x90
https://www.acmicpc.net/problem/9012
9012번: 괄호
괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고
www.acmicpc.net
스택을 이용한 기본적인 알고리즘 문제이다.
접근 방법
1. '(' 열린 괄호가 들어오면 스택에 쌓는다.
2. ')' 닫힌 괄호가 들어오면 스택에 열린 괄호 하나를 빼낸다.
3. 마지막에 스택에 괄호가 남아 있거나 혹은 비어 있지만 빼내야 하는 경우 "NO" 출력
#include <stdio.h>
#pragma warning(disable:4996)
char a[60], b[2][10] = { "YES", "NO" };
int main()
{
int n, sw, key; //
scanf("%d", &n);
for (int i = 1; i <= n; i++)
{
scanf("%s", a);
key = -1; // 스택을 가리키는 key
sw = 0; // YES로 초기화
for (int j = 0; a[j]; j++)
{
if (a[j] == '(') ++key; // 열린 괄호라면 삽입
else --key; // 닫힌 괄호라면 빼냄
if (key < -1) sw = 1; // 빼낼 것이 없는데도 빼낼 시 NO
}
if (key > -1) sw = 1; // 스택에 자료가 남아있으면 NO
printf("%s\n", b[sw]);
}
}
소괄호만 입력을 받고 출력에 괄호가 필요없으니 굳이 스택 배열에 쌓지 않고도 문제를 맞힐 수 있다.
728x90
'알고리즘' 카테고리의 다른 글
| 백준 C++, PYTHON - 예산 (이진 탐색) (0) | 2023.03.29 |
|---|---|
| 백준 c++ - 치킨 배달 (브루트포스 알고리즘) (0) | 2023.03.29 |
| C++ - Greedy algorithm ( 헛간 고치기 ) (0) | 2023.02.09 |
| C++ - 큐, 너비 우선 탐색 (도망간 소 잡기) (0) | 2023.02.09 |
| 백준, Python - 터렛 (1002) (0) | 2022.11.23 |