본문 바로가기
알고리즘/BOJ(C++)

[BOJ 알고리즘] 8958 "OX퀴즈"

by frog 2021. 5. 18.

[BOJ 알고리즘] 8958 "OX퀴즈"


문제

  • "OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수는 3이 된다.
  • "OOXXOXXOOO"의 점수는 1+2+0+0+1+0+0+1+2+3 = 10점이다.
  • OX퀴즈의 결과가 주어졌을 때, 점수를 구하는 프로그램을 작성하시오.

● 소스코드

#include <stdio.h>
#include <string.h>
#include <algorithm>

using namespace std;

int main()
{
	int n;
	scanf("%d",&n);
	
	for(int cur=0; cur<n; cur++)
	{
		char str[81] = {};
		scanf("%s",str);
		
		int sum = 0;
		int score = 0;
		int len = strlen(str);
		
		for(int i=0; i<len; i++)
		{
			if(str[i] == 'X')
			{
				score = 0;
				continue;
			}
			
			score++;
			sum += score;
		}
		printf("%d\n",sum);
	}
	
	return 0;
}

 

풀이

    - 특별한 알고리즘은 없다.

    - O가 연속되어 있으면 score 변수를 증가시키고 sum 변수에 더한다.

    - X가 나오면 score 변수를 0으로 바꾼다.

 

* www.acmicpc.net/problem/8958 

 

8958번: OX퀴즈

"OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수

www.acmicpc.net

댓글