8958번 - OX퀴즈

2022. 4. 26. 15:23백준/C++

문제

"OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수는 3이 된다.

"OOXXOXXOOO"의 점수는 1+2+0+0+1+0+0+1+2+3 = 10점이다.

OX퀴즈의 결과가 주어졌을 때, 점수를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 길이가 0보다 크고 80보다 작은 문자열이 주어진다. 문자열은 O와 X만으로 이루어져 있다.

출력

각 테스트 케이스마다 점수를 출력한다.

 

#include <iostream>

using namespace std;

class stack
{
public:
    stack():o(0),score(0){}
    ~stack(){};

    void push(char result)
    {
        if(result == 'O')
        {
            o++;
            score += o;
        }
        else if(result == 'X')
        {   
            o = 0;
        }
    }

    int GetScore()
    {
        cout<<score<<"\n";
        return score;
    }

private:
    int o;
    int score;

};

int main(void)
{

    ios::sync_with_stdio(false);
    cin.tie(NULL);

    int repeat;
    cin>>repeat;
    
    while(repeat--)
    {
        stack s;

        string result;
        cin>>result;

        for(int i = 0; i<result.size(); i++)
        {
            s.push(result[i]);
        }
        s.GetScore();
    }
    return 0;
}

'백준 > C++' 카테고리의 다른 글

18258번 - 큐2  (0) 2022.05.01
4344번 - 평균은 넘겠지  (0) 2022.04.26
1546번 - 평균  (0) 2022.04.26
3052번 - 나머지  (0) 2022.04.26
2577번 - 숫자의 개수  (0) 2022.04.26