코딩/백준
[백준][C] 8958. OX퀴즈
rivermoon
2022. 10. 2. 20:46
https://www.acmicpc.net/problem/8958
OX퀴즈의 결과가 한 줄에 주어지며, 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수
가 됩니다.
예제 입력
5
OOXXOXXOOO
OOXXOOXXOO
OXOXOXOXOXOXOX
OOOOOOOOOO
OOOOXOOOOXOOOOX
예제 출력
10
9
7
55
30
해결 방법
최초로 문제를 맞은 경우, 점수는 1점이 추가됩니다.
연속 2번으로 문제를 맞은 경우, 점수는 2점이 추가됩니다.
게임에서의 콤보랑 비슷한 개념으로, 문제를 맞으면 맞을수록 얻는 점수가 늘어나지만,
한 번이라도 틀리면 콤보가 초기화되고 얻는 점수가 1점으로 돌아간다고 생각하면 편합니다.
각 테스트 케이스마다 점수를 출력하므로 한 번 반복할때마다 점수를 출력하게끔 작성합니다.
또한 콤보와 점수는 각 케이스마다 초기화 되므로 for문 맨 위에 점수 = 0, 콤보(정답 시 얻는 점수) = 1로
초기화하는 과정을 거쳐야 합니다.
코드
#include <stdio.h>
#include <string.h> // strlen 함수를 사용하기 위함입니다.
int main()
{
int score, n, c;
char ox[80];
scanf("%d", &n);
for (int i = 0; i < n; i++){
score = 0;
c = 1; /* 점수와 콤보를 초기화하는 과정입니다. */
scanf("%s", ox);
for (int j = 0; j < strlen(ox); j++){
if (ox[j] == 'O'){
score += c;
c++; /* 정답 시 얻는 점수가 1점씩 늘어납니다. */
}
else c = 1; /* ox퀴즈에서 틀린 경우, 점수를 얻지 않고 콤보는 1점으로 리셋됩니다. */
}
printf("%d\n", score);
}
}