본문 바로가기

BAEK JOON ㅡ C

[BAEK JOON/C] 8958 ㅡ OX퀴즈

 

백준 알고리즘 문제 8958 ㅡ OX퀴즈

 

문제

"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 <stdio.h>
#include <string.h>

int main(void) {
	int num, score, total;
	char ox[100] = { 0 };

	scanf("%d", &num);

	for (int j = 0; j < num; j++) {
		score = 0;
		total = 0;
		scanf("%s", ox);
		for (int i = 0; i < strlen(ox); i++) {
			if (ox[i] == 'X') {
				score = 0;
			}
			else if (ox[i] == 'O') {
				score++;
				total += score;
			}
		}
		printf("%d\n", total);
	}
}

 

 

메모

strlen() 함수를 써서 배열의 길이값만큼 for문이 돌아가도록 설정했다.

값이 'O'이 연속될 수록 score를 증감시키고 'X'가 오면 score를 다시 0으로 초기화시켜 점수를 연산하였다.

 

배열 ox의 길이값을 30으로 잡았더니 자꾸 런타임 에러가 떨어져서 넉넉하게 100으로 잡아서 돌렸다.

 

 

 

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

 

8958번: OX퀴즈

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

www.acmicpc.net