"OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수는 3이 된다.
"OOXXOXXOOO"의 점수는 1+2+0+0+1+0+0+1+2+3 = 10점이다.
OX퀴즈의 결과가 주어졌을 때, 점수를 구하는 프로그램을 작성하시오.
첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 길이가 0보다 크고 80보다 작은 문자열이 주어진다. 문자열은 O와 X만으로 이루어져 있다.
각 테스트 케이스마다 점수를 출력한다.
#include <iostream>
using namespace std;
int getStrlen(char* str);
int main() {
// 테스트 케이스의 개수를 입력 받는다
int testCase;
cin >> testCase;
char str[80];
int score = 0;
for (int i = 0; i < testCase; i++)
{
// 길이가 0보다 크고 80보다 작은 문자열의
// 테스트 케이스를 입력 받는다.
cin >> str;
int length = getStrlen(str); // 문자열의 길이를 구한다.
int addScore = 0;
for (int k = 0; k < length; k++)
{
if (str[k] == 'O')
{
score += ++addScore;
}
else
addScore = 0;
}
cout << score << endl;
score = 0;
}
return 0;
}
int getStrlen(char* str)
{
int count = 0;
// 배열의 첫 주소를 받아 다음 주소를 참조해
// NULL을 만날 때 까지 반복하여 카운트를 증가시켜서 길이를 찾는다.
while (*str != NULL)
{
str++;
count++;
}
return count;
}
백준 컴파일에서는 strlen을 사용하려면 string.h
또는cstring
을 추가하면 해결 된다고한다. 그러나 strlen함수와 같은 getStrlen 함수도 한번 만들어봤다.
참고 자료 및 사이트 (감사합니다)