입력 코드
#include <stdio.h>
int main(void)
{
int i, j;
int s2 = 0, cnt = 0, length = 0;
char str[2000];
char c;
for (i = 1; ; i++) {
length = 0;
while (1) {
scanf("%c", &c);
if (c == '-') {
cnt = -1;
break;
}
if (c == '\n')
break;
str[length] = c;
length++;
}
if (cnt == -1)
break;
if (length == 0) {
printf("%d. 0\n", i);
continue;
}
s2 = 0, cnt = 0;
for (j = length - 1; j >= 0; j--) {
if (str[j] == '{') {
if (s2 == 0) {
cnt++;
s2++;
}
else
s2--;
}
else
s2++;
}
printf("%d. %d\n", i, cnt + (s2 / 2));
}
return 0;
}
출처 www.acmicpc.net/source/20711323
#include <stdio.h>
#include <string.h>
int main() {
int len, top, i = 0, cnt;
char s[2001], stack[2001];
while(1) {
scanf("%s", s);
if(s[0] == '-') break;
i++;
len = strlen(s);
cnt = top = 0;
for(int i = 0; i < len; i++) {
if(s[i] == '{')
stack[top++] = '{';
else if(s[i] == '}') {
if(stack[top - 1] == '{')
top--;
else stack[top++] = '}';
}
}
while(top) {
if(stack[(top--) - 1] == stack[(top--) - 1])
cnt++;
else cnt += 2;
}
printf("%d. %d\n", i, cnt);
}
return 0;
}
출처 www.acmicpc.net/source/26207922
코드 설명
#자료구조 #그리디 알고리즘 #문자열 #스택
문제 출처
'C' 카테고리의 다른 글
#71. [백준_C언어] 9655 : 돌 게임 \ 다이나믹 프로그래밍 (0) | 2021.02.10 |
---|---|
#70. [백준_C언어] 1010 : 다리 놓기 \ 다이나믹 프로그래밍 (0) | 2021.02.10 |
#68. [백준_C언어] 1021 : 회전하는 큐 \ 자료구조 (0) | 2021.02.09 |
#67. [백준_C언어] 1966 : 프린터 큐 \ 큐, 덱 (0) | 2021.02.08 |
#66. [백준_C언어] 18258 : 큐 2 \ 큐, 덱 (0) | 2021.02.08 |