백준 9858번

CharliePark·2020년 9월 22일
0

TIL

목록 보기
43/67

BOJ 9858번 : OX퀴즈

첫째 줄에 테스트 케이스의 개수가 주어지고

OOXXOXXOOO 와 같은 테스트 케이스가 주어진다

테스트 케이스를 문자열로 받으면, 문자열 끝부분의 '\0'을 통해 끝나는 지점을 알 수 있다

이후 string.h 안의 strlen() 을 이용해 이 문자열을 다루면 된다

연속된 O일 경우 점수가 증가하는 (1 → 2 → 3 → ...) 조건이 있으므로

점수를 세는 변수(score)와, 연속 정답을 점수로 세는 변수(temp_score) 두개가 필요하다

for 문 안에서 각 테스트 케이스를 점수로 바꿔 처리하고, 각 테스트 케이스마다 점수 변수 두개 다 0으로 초기화하는 게 중요하다.


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
    int num;
    char* OnX = (char*)malloc(sizeof(char) * 80);
    int temp_score;
    int score;

    while(scanf("%d", &num) != 1) continue;

    for (int i = 0; i < num; i++)
    {
        temp_score = 0;
        score = 0;

        while(scanf("%s", OnX) != 1) continue;
        for (int k = 0; k < strlen(OnX); k++)
        {
            if (OnX[k] == 'O')
                temp_score++;
            else
                temp_score = 0;
            score += temp_score;
        }
        printf("%d\n", score);
    }
}

0개의 댓글