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

 

8958번: OX퀴즈

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

www.acmicpc.net

#include <stdio.h>
#include <string.h>
#pragma warning(disable:4996)
int main() {
	char n[81];
	int r, score = 0, plus = 1;
	scanf("%d", &r);
	for (int i = 0; i < r; i++) {
		score = 0;
		plus = 1;
		scanf("%s", n);
		for (int j = 0; j < strlen(n); j++) {
			if (n[j] == 79) {
				score += plus;
				plus++;
			}
			else if (n[j] == 88) {
				plus = 1;
			}
		}
		printf("%d\n", score);
	}
	return 0;
}

이 문제는 o가 반복된 횟수만큼 가중치를 점수에 더하여 출력하면 해결할 수 있는 문제이다.

이 코드의 순서는 다음과 같다.

1.  문자열, 반복할 횟수와 점수, 가중치 값을 저장할 함수를 각각 선언한다.

2. 반복할 횟수를 입력받는다.

3. 반복할 횟수를 이용해서 반복문을 실행한다.

4. score 함수와 plus 함수를 각각 0, 1로 초기화 해준다.

그 까닭은 테스트케이스가 반복되면서 여러번 사용되는 함수이므로 초기값으로 초기화를 해주어야 한다.

5. 문자열을 입력받는다.

6. 입력받은 문자열을 이용해서 반복문을 실행한다.

만약 입력받은 문자열 n[i]가 O라면 점수에 가중치를 추가하고 가중치에 1을 더한다.

만약 다음 문자도 O라면 가중치에 계속 1씩을 추가하여 점수에 추가한다.

만약 문자열 n[i]가 X라면 가중치를 1로 다시 초기화해준다.

7. 점수를 출력한다.

 

이 문제는 가중치를 초기화해주어야 한다는 것을 잊지 않고 꼭 초기화 해주어야 한다.

'TeamLog > 과제' 카테고리의 다른 글

1598. 꼬리를 무는 숫자 나열  (0) 2023.04.10
1402. 아무래도이문제는A번난이도인것같다  (0) 2023.04.09
2609. 최대공약수와 최소공배수  (0) 2023.04.09
1259. 팰린드롬수  (0) 2023.04.09
1546. 평균  (0) 2023.04.09
vkeod