8958. OX퀴즈

박진우·2023년 4월 7일
0

문제 링크:

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

코드(C):

#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을 초기화한다.

profile
SRIHS Infosec

0개의 댓글