코딩/백준

[백준][C] 8958. OX퀴즈

rivermoon 2022. 10. 2. 20:46

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

OX퀴즈의 결과가 한 줄에 주어지며, 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수

가 됩니다.

 

예제 입력

5
OOXXOXXOOO
OOXXOOXXOO
OXOXOXOXOXOXOX
OOOOOOOOOO
OOOOXOOOOXOOOOX

예제 출력

10
9
7
55
30

해결 방법

최초로 문제를 맞은 경우, 점수는 1점이 추가됩니다.

연속 2번으로 문제를 맞은 경우, 점수는 2점이 추가됩니다.

 

게임에서의 콤보랑 비슷한 개념으로, 문제를 맞으면 맞을수록 얻는 점수가 늘어나지만,

한 번이라도 틀리면 콤보가 초기화되고 얻는 점수가 1점으로 돌아간다고 생각하면 편합니다.

 

각 테스트 케이스마다 점수를 출력하므로 한 번 반복할때마다 점수를 출력하게끔 작성합니다.

또한 콤보와 점수는 각 케이스마다 초기화 되므로 for문 맨 위에 점수 = 0, 콤보(정답 시 얻는 점수) = 1로

초기화하는 과정을 거쳐야 합니다.

 

코드

 

#include <stdio.h>
#include <string.h> // strlen 함수를 사용하기 위함입니다.

int main()
{
	int score, n, c;
	char ox[80]; 
	
	scanf("%d", &n);
	
	for (int i = 0; i < n; i++){
		score = 0;
		c = 1; /* 점수와 콤보를 초기화하는 과정입니다. */
		scanf("%s", ox);
		
		for (int j = 0; j < strlen(ox); j++){
			if (ox[j] == 'O'){
				score += c;
				c++; /* 정답 시 얻는 점수가 1점씩 늘어납니다. */
			}
			else c = 1; /* ox퀴즈에서 틀린 경우, 점수를 얻지 않고 콤보는 1점으로 리셋됩니다. */
		}
		printf("%d\n", score);
	}
}