본문 바로가기
알고리즘/BAEKJOON

BOJ 9012 : 괄호

by 피로물든딸기 2021. 2. 7.
반응형

알고리즘 문제 전체 링크

 

www.acmicpc.net/problem/9012

 

올바른 괄호인지 체크하는 문제이다.

실제로 작성하는 cpp 코드를 생각하면 쉽다.

코드를 작성할 때, 열린 괄호 '('를 썼다면 반드시 닫힌 괄호 ')'를 써야한다.

즉, 열린 괄호를 +1, 닫힌 괄호를 -1이라고 생각한다면 마지막에는 반드시 0이 되어야 한다.

 

열린 괄호 뒤에는 다시 열린 괄호 또는 닫힌 괄호가 와야한다.

그러므로, 괄호가 완전히 닫히기 전에 닫힌 괄호가 열린 괄호보다 많아서는 안된다.

 

#include <stdio.h>

int main(void)
{
	int T;

	scanf("%d", &T);
	for (int tc = 0; tc < T;tc++)
	{
		int i, flag, sp;
		char str[50 + 5];

		flag = sp = i = 0;
		scanf("%s", str);

		while (str[i])
		{
			if (str[i] == '(') sp++; /* 열렸으면 + */
			else --sp;               /* 닫혔으면 - */

			if (sp < 0) /* 완전히 닫히기 전 까지 닫힌 괄호가 많은지 체크 */
			{
				flag = 1;
				break;
			}

			i++;
		}

		if (flag == 1 || sp != 0) printf("NO\n");
		else printf("YES\n");
	}

	return 0;
}
반응형

'알고리즘 > BAEKJOON' 카테고리의 다른 글

BOJ 14501, 15486 : 퇴사, 퇴사 2  (0) 2021.02.15
BOJ 10866 : 덱  (0) 2021.02.08
BOJ 10845, 18258 : 큐, 큐2  (0) 2021.02.07
BOJ 10773 : 제로  (0) 2021.02.06
BOJ 10828 : 스택  (3) 2021.02.05

댓글