ALGORITHM

[백준/ node.js] 배열 - 8958번 OX퀴즈

연듀 2021. 7. 3. 21:12

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

 

8958번: OX퀴즈

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

www.acmicpc.net

 

문제

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

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

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

입력

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

출력

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

 

 

const input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n');

const n = Number(input[0]);

for(let i=1; i<=n; i++){
    let count = 1;
    let sum = 0;
    
    for(let j=0; j<input[i].length; j++){
        if(input[i][j]==="O"){
            sum+=count;
            count++;
        }else{
            count = 1;
        }
    }
    console.log(sum);
}

 

 

한 줄씩 나눠 input값을 입력 받아 첫번째 줄의 값으로 테스트 케이스 개수를 저장한다.

두번째 줄부터 테스트 케이스 개수만큼 바깥쪽 for문을 돌고

각 줄의 OX개수만큼 안쪽 for문을 돌며 O일 경우 0으로 초기화한 sum에 count를 1씩 증가시켜 더해준다.

X일 경우 count를 1로 다시 초기화하여 더해준다.