BJ - OX퀴즈

Goody·2021년 2월 8일
0

알고리즘

목록 보기
32/122

문제

시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
1 초 128 MB 76362 38431 32878 51.475%
문제
"OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수는 3이 된다.

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

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

예시

INPUT

5
OOXXOXXOOO
OOXXOOXXOO
OXOXOXOXOXOXOX
OOOOOOOOOO
OOOOXOOOOXOOOOX

OUTPUT

10
9
7
55
30

풀이

  • 문자열에서 "O" 가 나올 때 마다 총점에 더해지는 점수가 1씩 늘어나고, "X" 가 나올 때 마다 총점에 더해지는 점수가 초기화되는 로직이다.
  • 총점에 더해질 점수가 점점 쌓이는 스택총점 변수 를 따로 둬서 점수를 늘려가면 된다.

코드

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

const input = [];


rl.on("line", function (line) {
    input.push(line);


}).on("close", function () {
    const quizList = input.slice(1);
   
    for (let j = 0; j < quizList.length; j++) {
        let scoreStack = 0;
        let scoreTotal = 0;     
        const quiz = [...quizList[j]];
    
        for (let i = 0; i < quiz.length; i++) {
            if (quiz[i] === "O") {
                scoreStack++;
                scoreTotal += scoreStack;
            }
            if (quiz[i] === "X")
                scoreStack = 0;
            }
        }
        console.log(scoreTotal);
    }
    process.exit();
})

0개의 댓글