학습 정리/👨‍💻 PS Study

[C] 백준 4949번 - 균형잡힌 세상

무딘붓 2022. 7. 8. 23:43

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

 

4949번: 균형잡힌 세상

하나 또는 여러줄에 걸쳐서 문자열이 주어진다. 각 문자열은 영문 알파벳, 공백, 소괄호("( )") 대괄호("[ ]")등으로 이루어져 있으며, 길이는 100글자보다 작거나 같다. 각 줄은 마침표(".")로 끝난다

www.acmicpc.net

(21.08.30)

4949번: 균형잡힌 세상 - C언어 풀이

 

[소스코드]

#pragma warning(disable:4996)
#include <stdio.h>
#include <string.h>
// [baekjoon] 4949번 - 균형잡힌 세상
// https://sirius7.tistory.com/

int main() {

	char s[105];
	char ck[105] = { 0 };
	gets(s);
	while (strcmp(s,".")) {
		int cnt_s = 0;
		int cnt_l = 0;
		int n = 0;
		for (int i = 0; i < strlen(s); i++) {
			if (s[i] == '(') {
				ck[n] = '(';
				n++;
			}
			else if (s[i] == '[') {
				ck[n] = '[';				
				n++;
			}
			else if (s[i] == ')') {
				if (ck[n - 1] == '(') {
					n--;
				}
				else {
					n = -10;
					i = strlen(s);
				}
			}
			else if (s[i] == ']') {
				if (ck[n - 1] == '[') {
					n--;					
				}
				else {
					n = -10;
					i = strlen(s);
				}
			}
		}
		if (n == 0) printf("yes\n");
		else printf("no\n");
		gets(s);
	}
}

문제를 풀면서 공부했던 내용은
문자열을 비교하는 함수 strcmp다.​

strcmp(lhs,rhs) 와 같이 사용하고, 사전 순으로 lhs와 rhs를 비교하여
문자열 lhs < rhs이면 음수,
문자열 lhs == rhs이면 0,
문자열 lhs > rhs이면 양수를 반환한다.