포스트

[백준][9012] 괄호

요구사항 분석

테스트 케이스 수 T가 주어지고 T개의 괄호 ‘(‘, ‘)’만으로 구성된 문자열이 입력됩니다.
각 문자열에 대해 ‘(‘ 문자로 시작해서 ‘)’ 로 짝이 이루어지는 문자열은 ‘YES’를 출력하고
짝이 맞지 않는 문자열은 ‘NO’를 출력합니다.

  1. (()) - YES
  2. )()( - NO


알고리즘 선택

문자열의 길이는 최대 50개까지 있으므로 순차탐색으로도 충분하기 때문에 문자열에 차례로 접근하여 짝이 이루어지는지 확인합니다.


풀이 분석

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include<iostream>

int main() {
	int T;
	std::cin >> T;
	
	for (int i = 0; i < T; ++i) {
		std::string buf;
		std::cin >> buf;
		int lcnt = 0, rcnt = 0;
		for (char c : buf) {
			if (c == '(') lcnt += 1;
			else rcnt += 1;
			if (lcnt < rcnt) break;
		}
		if (lcnt == rcnt) printf("YES\n");
		else printf("NO\n");
	}
}  
  


이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.