백준 8958번 문제 OX퀴즈이다.
https://www.acmicpc.net/problem/8958
8958번: OX퀴즈
"OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수
www.acmicpc.net
< 문제 >
"OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수는 3이 된다.
"OOXXOXXOOO"의 점수는 1+2+0+0+1+0+0+1+2+3 = 10점이다.
OX퀴즈의 결과가 주어졌을 때, 점수를 구하는 프로그램을 작성하시오.
정리하면 O가 있을때 1점, 그다음 문자가 O일경우 2점 추가, 이런식으로 O 다음 O가 나오면 1씩 증가한만큼 점수가 추가되고 X가 나오면 초기화된다.
예제에서 하나 예를 들면
OOXXOOXXOO는 1+2+0+0+1+2+0+0+1+2 = 9점
OOOOXOOOOXOOOOX는 1+2+3+4+0+1+2+3+4+0+1+2+3+4+0 = 30점
이런식으로 점수가 계산된다.
#include <iostream>
#include <string.h>
using namespace std;
int main() {
int t;
cin >> t;
char ox[80];
int score = 0;
int total_score = 0;
for (int i = 0; i < t; i++) {
cin >> ox;
for (int j = 0; j < strlen(ox); j++) {
if (ox[j] == 'O') {
score++;
total_score += score;
}
else if (ox[j] == 'X') {
score = 0;
}
}
cout << total_score << endl;
score = 0;
total_score = 0;
}
}
코드를 보면 이렇다.
score는 각각의 점수를 말하고 total_score는 총점을 나타낸다.
먼저 char형으로 선언된 ox배열 안에 OX로 이뤄진 char를 각각 입력한다.
문제의 OOXXOXXOO를 입력하면 아래의 표와 같이 입력된다.
입력을 한 후 O가 입력될 경우 score가 1 증가하고 total_score에 더해진다.
그리고 바로 다음 문자가 O일 경우에는 score가 1 더 증가해서 2가 되고 이 값이 total_score에 더해져 total_score는 3이된다.
다음 문자가 X가 나올 경우에는 증가하던 score를 다시 0으로 초기화한다.
이 과정을 반복하여서 점수를 계산하고 total_score를 출력한 후 score와 total_score는 다시 0으로 초기화시켜줘
다음 문자를 입력받을때 지장이 없도록 한다.
비쥬얼 스튜디오에서는 include<string.h>를 사용하지 않아도 strlen()를 사용할 수 있지만 그대로 제출하면 오류가 발생하기 때문에 문제 제출을 할 때에는 include<string.h>를 추가해줘야 한다.
'백준 > 단계별' 카테고리의 다른 글
[C++] 백준 4673 (2) | 2022.12.09 |
---|---|
[C++] 백준 4344 (0) | 2022.12.09 |
[C++] 백준 3052 (0) | 2022.12.09 |
[C++] 백준 5597 (0) | 2022.12.09 |
[C++] 백준 2562 (0) | 2022.12.09 |