[백준 9012번] 괄호 (C++)

2023. 10. 12. 17:13·PS/백준 알고리즘[BOJ]
728x90

1. 문제

https://www.acmicpc.net/problem/9012

 

9012번: 괄호

괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고

www.acmicpc.net

스택을 활용한 전형적인 괄호의 유효성을 검사하는 문제이다.

2. 풀이

  1. 문자열을 탐색하면서 stack이 비어있으면 추가한다.
  2. stack이 차있는 경우 stack.top와 문자를 비교하여 짝이 맞으면 stack.top을 제거하고 짝이 맞지 않으면 현재 문자를 stack에 추가한다. 

3. 코드

#include<iostream>
#include<string>
#include<stack>

using namespace std;

stack<char> sta;
string str;

int main(void) {
	cin.tie(0);
	ios::sync_with_stdio(false);
	int T;
	cin >> T;
	while (T--) {
		cin >> str;
		int len = str.length();
		int index = 0;
		while (index < len) {
			if (sta.empty()) {
				sta.push(str[index++]);
				continue;
			}
			if (str[index] == ')' && sta.top() == '(') sta.pop();
			else sta.push(str[index]);
			index++;
		}
		if (sta.empty()) cout << "YES\n";
		else cout << "NO\n";
		while (!sta.empty()) {
			sta.pop();
		}
	}
	return 0;
}

 

728x90

'PS > 백준 알고리즘[BOJ]' 카테고리의 다른 글

[백준 1074번] Z (C++)  (0) 2023.10.18
[백준 10799번] 쇠막대기 (C++)  (0) 2023.10.12
[백준 3986] 좋은 단어 (C++)  (0) 2023.10.12
[백준 4949번] 균형잡힌 세상 (C++)  (0) 2023.10.12
[백준 17609] 회문 (C++)  (0) 2023.10.09
'PS/백준 알고리즘[BOJ]' 카테고리의 다른 글
  • [백준 1074번] Z (C++)
  • [백준 10799번] 쇠막대기 (C++)
  • [백준 3986] 좋은 단어 (C++)
  • [백준 4949번] 균형잡힌 세상 (C++)
BE_개발자
BE_개발자
경이로운 BE 개발자가 되기 위한 프로그래밍 공부 기록장
    250x250
  • BE_개발자
    경이로운 개발일기
    BE_개발자
  • 전체
    오늘
    어제
    • 전체 보기 (213)
      • AI (1)
        • AI native (0)
        • Skill (0)
      • SpringBoot (4)
        • JPA (3)
        • Security (0)
        • 튜토리얼 (1)
        • 기타 (0)
      • Infra (0)
        • Docker (0)
        • AWS (0)
        • NCP (0)
        • GCP (0)
      • React (19)
      • 서버 (0)
      • Computer Science (16)
        • SW Engineering (10)
        • Data Base (2)
        • OS(운영 체제) (4)
      • Data science (0)
        • Probability & Random Variab.. (0)
        • Data Analysis(데이터 분석) (0)
      • 자료구조 | 알고리즘 (57)
        • 선형 자료구죠 (6)
        • 비선형 자료구조 (9)
        • 정렬(Sort) (3)
        • 탐색(Brute Force) (7)
        • 분할 정복(Devide Conquer) (3)
        • 동적 계획법 (6)
        • 탐욕(Greedy) (2)
        • 수학 (7)
        • 심화 알고리즘 (10)
      • PS (44)
        • 백준 알고리즘[BOJ] (38)
        • 프로그래머스[programmers] (3)
      • Dev tool (15)
        • 개발 도구 및 환경 (0)
        • vscode (3)
        • Git Hub (4)
        • Chrome 웹스토어 (5)
        • Python 전용 개발환경 (0)
      • 성장기록 (1)
      • 개인 project (14)
        • 홈페이지 만들기 (11)
        • 냉보미 (1)
      • STL(Standard Library) (9)
      • programming Language (1)
        • javascript (1)
      • 기타 (13)
        • html css (11)
      • (책, 글, 블로그)리뷰 (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 백준
    • Github
    • Notion
    • 서울과학기술대학교 학술동아리 EC
  • 공지사항

  • 인기 글

  • 태그

    OS
    운영체제
    BFS
    순열
    CS
    탐색
    프론트엔드
    DP
    자료구조
    stl
    react
    괄호쌍
    백트래킹
    재귀함수
    C++
    SW Engineering
    수학
    백준
    stack
    완전 탐색
    SW 공학
    스택
    PS
    스프링부트
    분할정복
    알고리즘
    이분 탐색
    브루트포스
    비트마스킹
    그리디
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
BE_개발자
[백준 9012번] 괄호 (C++)
상단으로

티스토리툴바