<알고리즘 문제풀이&연습>/[C++] 백준, 프로그래머스 등등

[백준 8958] OX퀴즈

BlockDMask 2017. 10. 27. 19:10
반응형
  • 안녕하세요. BlockDMask 입니다. 

  • 면접보고 중간고사보고;; 코딩테스트 보고;;

  • 바쁜 나날들을 보냈습니다. 1일 1문제를 못했습니다.

  • 코딩 테스트 본 문제를 올릴수는 없으니;;

  • 아무튼 오늘의 문제 풀어보겠습니다.

0. 제목

  • 백준 8958 OX퀴즈

  • BOJ 8958 OX퀴즈

1. 문제 설명

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

  • 예를 들어, 위의 문제의 점수는 3이 된다.
    "OOXXOXXOOO"의 점수는 1 + 2+ 0 + 0 + 1 + 0 + 0 + 1 + 2 + 3 = 10 점이다.
    OX퀴즈의 결과가 주어졌을 때, 점수를 구하는 프로그램을 작성하시오.

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

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

2. 풀이과정

  • string 타입으로 받았지만 속도가 상대적으로 느려서 char 배열 형태로 받아서 풀었습니다.


3. 코드


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
31
32
33
34
35
36
37
38
39
#include<iostream>
#include<cstdio>
using namespace std;
 
void input(int& n){
    cin >> n;
}
void solution(char &(arr[]), int &result){
    int cnt=0;
    result =0;
    scanf("%s", arr);
    int i=0;
 
 
    while(arr[i] !='\0'){
        if(arr[i]=='X'){
            cnt = 0;
        }else{
            cnt++;
        }
        result += cnt;
        i++;
    }
}
 
int main(void){
    int n;
    int result;
    char arr[81];
 
    input(n);
    for(int i=0; i<n; i++){
        solution(arr, result);
        cout << result <<"\n";
    }
 
 
    return 0;
}

cs


4. 인증


문제출처 - https://www.acmicpc.net/problem/8958

감사합니다.

반응형