본문 바로가기
ALGORITHM/백준 With Node.js

[백준] 8958번 / OX퀴즈 / Node.js

by LAY CODER 2021. 4. 23.

문제

 

"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

 

CODE

const readline = require('readline');

const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout,
});

const input = [];

rl.on('line', function (line) {
    input.push(line);
}).on('close', function () {
    // 입력받을 횟수
    const count = +input[0];

    for (let i = 1; i <= count; i++) {
        // 점수와 보너스점수 초기화
        let score = 0;
        let bonus = 0;

        // 입력받은 OX퀴즈 결과
        const result = input[i].split('');

        for (let j = 0; j < result.length; j++) {
            // 맞았을 경우
            if (result[j] === 'O') {
                // 점수 에 1점 과 보너스를 더해준다.
                score += 1 + bonus;
                // 보너스 점수가 1점 오른다.
                bonus++;
            } else {
                // 보너스 점수 초기화
                bonus = 0;
            }
        }
        console.log(score);
    }

    process.exit();
});

 

 

Comment

 

중첩 반복문을 통해서 연속해서 맞았을 경우 Bonus점수를 1씩 증가시키고 틀렸을 경우 0으로 초기화한다.

댓글