티스토리 뷰

반응형

OX퀴즈 결과로 최종 점수를 맞히는 문제

 


문제

 

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

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

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

 

입력

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

 

출력

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

 

 

풀이

 

 높은 정답률(50% 이상)만큼 풀이 과정을 쉽게 떠올릴 수 있는 문제였습니다. 주어지는 문자열을 처음부터 탐색하면서 O가 연속으로 배치되어 있다면 점수 카운트를 1씩 늘리면서 더하고 중간에 X가 나오면 점수 카운트를 0으로 리셋시킨 뒤 O를 만나면 다시 점수 카운트를 1씩 늘려서 더하기를 반복해서 풀었습니다. 

 

 

코드

 

#include <iostream>
#include <vector>
#include <string>

using namespace std;

int main()
{
    int T;
    cin >> T;
    
    for (int i = 0; T > i; i++)
    {
        string s;
        cin >> s;
        
        int answer = 0;
        int count = 0;
        for (int j = 0; s.length() > j; j++)
        {
            //O라면 1씩 늘려서 더해 줌
            if ('O' == s[j])
                answer += ++count;
            //X를 만나면 카운트 리셋 
            else
                count = 0;
        }
        
        cout << answer << "\n";
    }
    
    return 0;
}
반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함