https://www.acmicpc.net/problem/8958
#include <stdio.h>
#include <string.h>
int main(void) {
int cases = 0;
char result[80];
int stack = 0;
int score = 0;
int i = 0;
scanf("%d", &cases);
for (i = 0; i < cases; i++) {
scanf("%s", result);
for (int j = 0; j < strlen(result); j++) {
if (result[j] == 'O') score += ++stack;
else stack = 0;
}
printf("%d\n", score);
score = 0;
stack = 0;
}
return 0;
}
이 문제는 테스트케이스의 갯수와 OX퀴즈의 결과가 입력으로 주어져 O 하나당 +1점이지만 연속으로 있다면 +1, +2, +3, ... 와 같은 식으로 점수를 매기고 틀리면 다시 +1점부터 시작하는 방식으로 채점하는 문제이다.
나는 채점을 위해 점수를 누적할 변수 score와 맞았을 때 더할 점수 stack을 만들었다. result라는 문자열로 result의 문자열 길이만큼 for문을 돌려 result의 j번째 문자가 O라면 먼저 stack을 1 더하고 그 값을 score에 더하도록 만들었다. 만약 O가 아니라면(X라면) stack값을 0으로 초기화한다. 채점이 끝나면 score변수를 출력하여 사용자에게 결과를 보여주고 다음 테스트케이스를 위해 score와 stack을 초기화한다.