티스토리 뷰

728x90
반응형

백준 온라인 저지(BOJ) 8958번 OX퀴즈

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

 

8958번: OX퀴즈

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

www.acmicpc.net

* 사용언어 : C언어, C++

 

1. 문제

"OOXXOXXOOO" 와 같은 OX 퀴즈 결과의 점수 구하기

X는 틀린 것이고 O는 맞은 것인데, O의 점수는 그 문제까지 연속된 O 의 개수임

 

2. 풀이

fgets 함수를 활용해서 한 줄을 char 배열에 통째로 넣으면서 N회 반복하였습니다.

(N 무시하고 \n(enter) 로 구분하려 했더니 마지막 케이스 처리가 안 되더군요)

 

fgets 로 배열에 문자열을 입력하면 문자가 끝난 다음 자리에 \0(null) 을 입력해줍니다.

'\0' 은 숫자 0으로 처리되므로 while 조건으로 넣어서 해당 케이스 채점을 끝낼 수 있었습니다.

 

3. 코드

#include <stdio.h>

int main() {
	int n;
	scanf("%d\n", &n);

	int total, count, idx;
	char input[81];

	for (int i = 0; i < n; ++i) {
		fgets(input, 81, stdin);

		total = 0;
		count = 0;
		idx = 0;

		while (input[idx]) {
			if (input[idx] == 'O')
				total += ++count;
			else 
				count = 0;
			++idx;
		}
		printf("%d\n", total);
	}

	return 0;
}
728x90
반응형
댓글