백준 코딩
백준 8958번 :OX 퀴즈 (배열)
까르르꿍꿍
2021. 9. 18. 22:17
https://www.acmicpc.net/problem/8958
8958번: OX퀴즈
"OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수
www.acmicpc.net
요약
1,문자열은 OX로 이루어져 있다.
2.결과는 연속된 O의 개수를 더하는 것이다.
3.X가 나오면 O의 연속은 끝이 난다.
ex)"OOXXOXXOOO"의 점수는 1+2+0+0+1+0+0+1+2+3 = 10점이다.
#include <iostream>
#include <cstring>
using namespace std;
// _CRT_SECURE_NO_WARNINGS
#pragma warning(disable:4996)
int main() {
int t;//테스트케이스 변수 선언
char d[82];
cin >> t;
int* value = new int[t]; //각 테스트케이스결과값 받을 배열 선언
for(int k=0;k<t;k++){
cin >> d;
int n = 0; //연속될 경우 증가할 변수 선언
int sum = 0; //총 점수 선언
for (int i = 0; i < strlen(d); i++) {
if (d[i] == 'O'){
sum+=++n; //문자O가 연속 될경우를 생각해서 ++n으로 증가한 수 더하기
}
else
n=0; //X일 경우 연속된 수 초기화
}
value[k] = sum;
}
for (int i = 0; i < t; i++)
cout << value[i]<<'\n';
return 0;
}
이 문제에서 처음으로 생각한 것은 연속된 값을 변수로 받아서 더하고 연속되지 않으면 초기화 시키는 것이다.