[백준] 8958번. OX 퀴즈

leeeha·2021년 9월 29일
0

백준

목록 보기
8/185

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

#include <iostream>
#include <string>
using namespace std;

int main()
{
	// 테스트 케이스의 개수
	int n; 
	cin >> n;

	// n개의 문자열 입력 받기
	string* s = new string[n];
	for (int i = 0; i < n; i++){
		cin >> s[i];
	}

	for (int i = 0; i < n; i++) { 
		// 각 문자열마다 계산 시작할 때는 0으로 초기화
		int sum = 0, score = 0;

		// 문자열의 길이만큼 점수 계산하기
		for (int j = 0; j < s[i].length(); j++) { 
			if (s[i].at(j) == 'O') {
				score++; // O가 나올 때마다 점수를 증가시키고
				sum += score; // sum에 더하다가
			}
			else { // X가 나오면
				score = 0; // 점수 초기화!!!
			}
			// 다시 O가 나오면 score 0부터 카운트하기
		}

		cout << sum << endl;
	}

	return 0;
}

연속해서 O가 나와야 점수가 증가하니까 바로 이전 인덱스의 원소랑 비교해야 되는 줄 알았는데, 아니었다. 그냥 X가 나오면 score를 0으로 초기화 하고, 다시 0부터 점수 카운팅을 해주면 된다. 이렇게 카운트 한 점수를 sum에 누적해서 더하여 결과를 출력한다.

profile
Keep Going!

0개의 댓글