백준/단계별

[C++] 백준 8958

loasd 2022. 12. 9. 01:51
반응형

백준 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