✏️ PS/Boj

[ C++ ] 백준 8958번: OX퀴즈

반응형

 

안녕하세요? 수구리입니다.

이번 문제도 마찬가지로 일차원 배열에 있는 문제입니다.

간단하게 설명하자면 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";
	}
}

 

 

[ 설명 ]

  1. 문제에서 정답으로 OX문자열이 80보다 작다고 했으므로 적당한 크기의 일차원 배열 h를 선언한다.
  2. test case, 결과, 정답의 수 변수 선언
  3. test case 입력
  4. t가 0이 될때까지 반복
  5. test case 마다 res와 acc를 0으로 초기화 후, OX퀴즈의 결과 입력
  6. h의 길이를 string.h 헤더의 strlen함수를 사용하여 구하고 해당 퀴즈의 결과를 순회
  7. 하나씩 순회하면서 "O"라면 정답수 증가, 결과에 정답 수를 더함
  8. 만약 "O"가 아니라면 정답 수를 초기화
  9. 결과 출력

 

 

반응형