데굴데굴이
데굴이의 개발일지
데굴데굴이
전체 방문자
오늘
어제
  • 분류 전체보기
    • 프로그래밍
      • C,C++
      • C#
      • 백준(BOJ)
      • 알고리즘
      • HTML
      • WinAPI
      • ETC
    • 유니티
      • 쉐이더
    • 컴퓨터 구조
    • 일본어

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • C
  • 정적 라이브러리
  • 10811번
  • C언어
  • 25644번
  • 동적 라이브러리 적용
  • 백준
  • 컴파일
  • 최대 상승
  • 라이브러리
  • 바구니 뒤집기
  • 1343번
  • 25644
  • 시퀀스 포인트
  • 평가 순서
  • 1032번#
  • 라이브러리 적용
  • 1158번
  • BOJ
  • multable
  • msvc++
  • 전처리
  • 정적 라이브러리 만들기
  • 알고리즘
  • 10811
  • 동적 라이브러리
  • Sequence Point
  • c++
  • 동적 라이브러리 만들기
  • 재귀함수가 뭔가요?

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
데굴데굴이

데굴이의 개발일지

프로그래밍/백준(BOJ)

[백준(BOJ) / C][Silver Ⅳ] 9012번 : 괄호

2024. 1. 3. 20:01
반응형

문제

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

 

9012번: 괄호

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

www.acmicpc.net


풀이

간단한 구현 문제입니다.

괄호 '(' 를 +1, 괄호 ')' 를 -1 이라 하고 해당 괄호를 순서대로 계산을 합니다.

만약 계산도중 0 미만으로 내려가면 괄호가 이상하게 배치됐다는 뜻이므로 플래그를 1로 바꾸며 반복문을 나옵니다.

그리고 0미만으로 내려가지 않더라도 최종 결과가 0이 아니라면 '('가 배치된 만큼 ')'가 배치된것이 아니므로 틀린 배치 입니다.


소스코드

#include <stdio.h>
#include <string.h>

int main(void)
{
	char arr[51];
	int testcase, length, flag = 0,count = 0;
	
	scanf("%d", &testcase);
	
	// testcase만큼 테스트를 실행한다.
	for(int i = 0; i < testcase; i++)
	{
		scanf("%s", arr);
		
		// 입력된 문자열의 길이를 구한다.
		length = strlen(arr);
		
		// 매번 테스트를 시작할때마다 계산된 변수들을 0으로 초기화한다.
		flag = 0;
		count = 0;
		
		// 문자열의 길이만큼 반복한다.
		for(int j = 0; j < length; j++)
		{
			// 해당 배열이 '(' 라면 count에 1을 더한다.
			if(arr[j] == '(')
			{
				 count++;
			}
			// 해당 배열이 ')' 라면 count에 1을 뺸다.
			else if(arr[j] == ')')
			{
				 count--;
			}
			
			// 만약 계산 도중 count가 0 미만이 되면 VPS가 아니기때문에 
			// flag를 1로 바꾼후 반복문에서 빠져나온다.
			if(count < 0)
			{
				flag = 1;
				break;
			}
		}
		
		// 만약 flag가 0이고 count가 0이라면 VPS가 맞기 때문에 'YES'를 출력한다.
		if(flag == 0 && count == 0)
		{
			printf("YES\n");
		}
		// 둘중 하나라도 아니라면 VPS가 아니기때문에 'NO'를 출력한다.
		else
		{
			printf("NO\n");
		}
	}
	
	return 0;
}
반응형

'프로그래밍 > 백준(BOJ)' 카테고리의 다른 글

[백준(BOJ) / C][Bronze Ⅰ] 2869번 : 달팽이는 올라가고 싶다  (1) 2024.01.06
[백준(BOJ) / C][Silver Ⅳ] 10773번 : 제로  (0) 2024.01.04
[백준(BOJ) / C][Silver Ⅴ] 25644번 : 최대 상승  (0) 2024.01.03
[백준(BOJ) / C][Bronze Ⅱ] 1152번 : 단어의 개수  (1) 2024.01.03
[백준(BOJ) / C][Silver Ⅳ] 1158번 : 요세푸스 문제  (1) 2024.01.02
    '프로그래밍/백준(BOJ)' 카테고리의 다른 글
    • [백준(BOJ) / C][Bronze Ⅰ] 2869번 : 달팽이는 올라가고 싶다
    • [백준(BOJ) / C][Silver Ⅳ] 10773번 : 제로
    • [백준(BOJ) / C][Silver Ⅴ] 25644번 : 최대 상승
    • [백준(BOJ) / C][Bronze Ⅱ] 1152번 : 단어의 개수
    데굴데굴이
    데굴데굴이

    티스토리툴바