문제 설명
괄호 문자열이 주어지면 올바른 괄호 문자열인지 판단하는 프로그램을 작성하시오.
올바른 괄호 문자열이란 여는 괄호와 닫는 괄호의 짝이 맞고, 포함 관계에 문제가 없는 문자열을 말한다.
예를 들어, )()( 인 경우 여는 괄호와 닫는 괄호의 짝이 맞지 않으므로 올바른 괄호 문자열이 아니다.
(()())인 경우 괄호의 짝이 맞고 포함 관계가 맞으므로 올바른 괄호 문자열이다.
입력
'('와 ')'로 이루어진 50,000글자 이하의 괄호 문자열이 입력된다.
문자열 중간에 공백이나 다른 문자는 포함되지 않는다.
출력
올바른 괄호 문자열이면 'good', 아니면 'bad'를 출력한다.
입력 예시
))()((
출력 예시
bad
나의 코드
#include <stdio.h>
int main()
{
int a = 0, b = 0, i; // 변수 선언
char str[50000]; // 문자열 선언
scanf("%s", str);
for(i=0;i<strlen(str);i++) // 문자열 길이만큼 반복
{
// 괄호 모양마다 다른 변수 증가
if(str[i] == '(')
a++;
else if(str[i] == ')')
b++;
// 만약 ')'가 '('보다 많으면 bad출력후 종료
if(a < b)
{
printf("bad");
return 0;
}
}
if(a == b) // 만약 값이 같으면 good출력 아니면 bad 출력
printf("good");
else
printf("bad");
return 0;
}
'알고리즘 공부 > 기타 C 언어 알고리즘' 카테고리의 다른 글
NYPC 2023 Round 1: 3번문제 (0) | 2023.10.22 |
---|---|
넥슨은 다람쥐를 뿌려라 (0) | 2023.09.18 |