[BOJ 알고리즘] 8958 "OX퀴즈"
● 문제
- "OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수는 3이 된다.
- "OOXXOXXOOO"의 점수는 1+2+0+0+1+0+0+1+2+3 = 10점이다.
- OX퀴즈의 결과가 주어졌을 때, 점수를 구하는 프로그램을 작성하시오.
● 소스코드
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
int main()
{
int n;
scanf("%d",&n);
for(int cur=0; cur<n; cur++)
{
char str[81] = {};
scanf("%s",str);
int sum = 0;
int score = 0;
int len = strlen(str);
for(int i=0; i<len; i++)
{
if(str[i] == 'X')
{
score = 0;
continue;
}
score++;
sum += score;
}
printf("%d\n",sum);
}
return 0;
}
● 풀이
- 특별한 알고리즘은 없다.
- O가 연속되어 있으면 score 변수를 증가시키고 sum 변수에 더한다.
- X가 나오면 score 변수를 0으로 바꾼다.
* www.acmicpc.net/problem/8958
8958번: OX퀴즈
"OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수
www.acmicpc.net
'알고리즘 > BOJ(C++)' 카테고리의 다른 글
[BOJ 알고리즘] 1018 "체스판 다시 칠하기" (0) | 2021.06.05 |
---|---|
[BOJ 알고리즘] 9498 "시험 성적" (0) | 2021.05.18 |
[BOJ 알고리즘] 3052 "나머지" (0) | 2021.05.18 |
[BOJ 알고리즘] 2920 "음계" (0) | 2021.05.18 |
[BOJ 알고리즘] 2908 "상수" (0) | 2021.05.18 |
댓글