해바

8958) 5. 1차원 배열 : OX퀴즈(Score) 본문

C, C++

8958) 5. 1차원 배열 : OX퀴즈(Score)

Bacha 2019. 8. 6. 01:06

문제

https://www.acmicpc.net/problem/8958

 

8958번: OX퀴즈

문제 "OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수는 3이 된다. "OOXXOXXOOO"의 점수는 1+2+0+0+1+0+0+1+2+3 = 10점이다. OX퀴즈의 결과가 주어졌을 때, 점수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는

www.acmicpc.net

 

내 코드

#include "stdio.h"
#include "stdlib.h"

int main() {
    char c;
    int* score, count(0), add(0);
    scanf("%d", &count);
    score = (int*)malloc(sizeof(int) * count);		// 입력받은 값만큼 동적배열 생성
    getchar();						// 버퍼 비우기
    for(int i(0); i < count; i++) {			// for문 1번 돌릴 때마다 1줄씩 처리됨
        add = 0;
        do {
            scanf("%c", &c);
            switch (c) {
                case 'O':
                    score[i] += ++add;			// 입력받는 값이 연속으로 O이면 +1, +2, +3 ... 증가
                    break;
                case 'X':
                    add = 0;				// X이면 초기화됨
                    break;
                default:
                    continue;				// 다른 값들은 그냥 패스
            }
        } while(c != '\n');
    }
    for(int i(0); i < count; i++) printf("%d\n", score[i]);
    
    return 0;
}
Comments