✏️ PS/Boj
[ C++ ] 백준 8958번: OX퀴즈
수구리
2021. 10. 14. 22:39
반응형
안녕하세요? 수구리입니다.
이번 문제도 마찬가지로 일차원 배열에 있는 문제입니다.
간단하게 설명하자면 OX 퀴즈 결과를 일차원 배열로 입력이 들어오게 됩니다.
이때 문제에서 정의한 규칙에 의해서 점수를 산출하여 출력하는 문제입니다.
[ 문제 ] 8958: OX퀴즈
https://www.acmicpc.net/problem/8958
8958번: OX퀴즈
"OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수
www.acmicpc.net
[ 나의 풀이 ]
#include <iostream>
#include <string.h>
using namespace std;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
char h[80]; // 퀴즈 정답 OX 문자열
int t, res, acc; // test case, 결과, 정답 수
cin >> t;
while (t--) {
res = 0; acc = 0;
cin >> h;
for (size_t i = 0; i < strlen(h); i++) {
if ( h[i] == 'O' ) {
acc++; res += acc;
} else {
acc = 0;
}
}
cout<<res<<"\n";
}
}
[ 설명 ]
- 문제에서 정답으로 OX문자열이 80보다 작다고 했으므로 적당한 크기의 일차원 배열 h를 선언한다.
- test case, 결과, 정답의 수 변수 선언
- test case 입력
- t가 0이 될때까지 반복
- test case 마다 res와 acc를 0으로 초기화 후, OX퀴즈의 결과 입력
- h의 길이를 string.h 헤더의 strlen함수를 사용하여 구하고 해당 퀴즈의 결과를 순회
- 하나씩 순회하면서 "O"라면 정답수 증가, 결과에 정답 수를 더함
- 만약 "O"가 아니라면 정답 수를 초기화
- 결과 출력
반응형