티스토리 뷰
728x90
반응형
백준 온라인 저지(BOJ) 9012번 괄호
https://www.acmicpc.net/problem/9012
9012번: 괄호
괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고
www.acmicpc.net
* 사용언어 : C언어, C++
1. 문제
T개의 테스트 케이스 괄호 문자열에 대해서
모양이 바르게 구성된 VPS(Valid Parenthesis String)인 경우 YES, 아닌 경우 NO를 출력
2. 풀이
Stack 자료구조를 활용하여 풀 수 있는 문제입니다.
입력 문자열을 한 글자 씩 탐색하면서 '('가 나오면 Stack에 넣고, ')'가 나오면 Stack에서 빼는 방식입니다.
만약 Stack에 값이 없는데 pop을 시도하거나(size가 음수)
마지막 문자열까지 처리했는데 Stack에 값이 남아있다면(size가 양수),
VPS가 아닌 것으로 보고 NO를 출력하고 아니면 YES를 출력했습니다.
설계를 마치고 보니 Stack에 들어가는 값이 '(' 하나 뿐이라는 것을 알 수 있었습니다.
그래서 구현할 때는 Stack에 굳이 char문자를 직접 넣거나 빼지 않고,
Stack의 크기를 의미하는 size라는 int 변수 하나만을 증가, 감소시키면서 같은 결과를 냈습니다.
3. 코드
#ifndef _CRT_SECURE_NO_WARNINGS
#define _CRT_SECURE_NO_WARNINGS
#endif
/*
9012_괄호
1112KB 0ms
*/
#include <cstdio>
const int LM = 51;
char input[LM], *c;
// char st[LM];
int size, t, valid;
int main() {
#ifdef _WIN32
freopen("input.txt", "r", stdin);
#endif // _WIN32
scanf("%d", &t);
while (t--) {
size = 0;
valid = 1;
scanf("%s", input);
c = (char*)input;
while (*c) {
if (*c == '(') ++size;
else --size;
if (size < 0) {
valid = 0;
break;
}
++c;
}
if (valid && !size) printf("YES\n");
else printf("NO\n");
}
return 0;
}
728x90
반응형
'개발자 > 문제풀이 (C언어)' 카테고리의 다른 글
[백준/BOJ] 12789번 도키도키 간식드리미 (C/C++) (2) | 2023.11.16 |
---|---|
[백준/BOJ] 4949번 균형잡힌 세상 (C/C++) (2) | 2023.11.16 |
[백준/BOJ] 10773번 제로 (C/C++) (0) | 2023.11.10 |
[백준/BOJ] 28278번 스택 2 (C/C++) (0) | 2023.11.10 |
[백준/BOJ] 13909번 창문 닫기 (C/C++) (0) | 2023.11.07 |
댓글
반응형
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 동탄에듀센터
- 나는늘잘해야한다고생각한다
- JUNGOL
- 세상을 읽는 새로운 언어 빅데이터
- 호암의마지막꿈
- 정세현의통찰
- 쿠프마케팅
- AdSendse
- 영화감상평
- 당신도느리게나이들수있습니다
- 정올
- 독서 감상평
- 인간본성불패의법칙
- 여가포인트
- 센터독서클럽
- 긴 자리 덧셈 뺄셈
- 안전운전특약
- 내가틀릴수도있습니다
- 긴 자리 곱셈
- 나의첫죽음학수업
- 자동차보험
- 지루함의심리학
- 동탄에듀센터2
- 독서감상평
- 역사의쓸모
- 최재천의공부
- 원서잡아먹는영작문
- 자이언트임팩트
- 문현공
- 삼성전자
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
글 보관함