코딩테스트 | (c++) 백준 8958번: OX퀴즈

trevor1107·2021년 5월 21일
0

✅문제

"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 함수도 한번 만들어봤다.



참고 자료 및 사이트 (감사합니다)

profile
프론트엔드 개발자

0개의 댓글