728x90

문제

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

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

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

 

입력

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

 

출력

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

 

예제 입력 1

5
OOXXOXXOOO
OOXXOOXXOO
OXOXOXOXOXOXOX
OOOOOOOOOO
OOOOXOOOOXOOOOX

 

예제 출력 1 

10
9
7
55
30

 

출처

ICPC > Regionals > Asia Pacific > Korea > Asia Regional - Seoul 2005 A번

  • 문제를 번역한 사람: baekjoon
  • 문제의 오타를 찾은 사람: jh82582

 

알고리즘 분류

  • 구현
  • 문자열

 

문제 출처

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

 

8958번: OX퀴즈

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

www.acmicpc.net

 


 

문제 해결 방법

  • 입력 받은 문자열의 첫번째 값부터 마지막 값까지 순회하면서 문자 'O'를 만날 경우, 변수 count의 값을 하나씩 증가시키도록 하였고, count의 값을 sum 변수와 합한 값을 sum 변수에 할당하도록 하였다.
    • C 스타일 문자형 배열을 사용하였으며, 문자형 배열의 길이를 파악하고자 <cstring> 헤더를 불러와 strlen() 함수를 사용하였다.
  • 최종적으로 sum 변수가 출력되도록 하였다.

 

코드

#include <iostream>
#include <cstring>    // strlen()
using namespace std;

#define S 80

int main() {
    cin.tie(NULL);
    cout.tie(NULL);
    ios_base::sync_with_stdio(false);

    int N, count, sum;
    char cases[S];

    cin >> N;
    
    for (int i = 0; i < N; i++) {
        cin >> cases;
        
        sum = 0;
        count = 0;

        for (int j = 0; j < strlen(cases); j++) {
            if (cases[j] == 'O') {
                count++;
                sum += count;
            }
            else {
                count = 0;
            }
        }
        cout << sum << '\n';
    }

    return 0;
}

 

채점 결과

 

참고

  • [단계별로 풀어보기] > [1차원 배열]

 

728x90

'Problem Solving > BOJ' 카테고리의 다른 글

[BOJ-1065][C++] 한수  (0) 2022.07.11
[BOJ-4673][C++] 셀프 넘버  (0) 2022.07.11
[BOJ-15596][C++] 정수 N개의 합  (0) 2022.07.11
[BOJ-4344][C++] 평균은 넘겠지  (0) 2022.07.10
[BOJ-1546][C++] 평균  (0) 2022.07.10
[BOJ-3052][C++] 나머지  (0) 2022.07.10
[BOJ-2577][C++] 숫자의 개수  (0) 2022.07.10
[BOJ-2562][C++] 최댓값  (0) 2022.07.10