백준 8958번 Node.js 풀이

버건디·2022년 8월 18일
0

백준

목록 보기
38/75
post-thumbnail

문제

"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

틀린 풀이

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


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

이렇게 제출했을때, vscode 상에서는 답이 나왔는데 백준에서는 틀렸다고 나왔다.

이유가 무엇일까.. 하고 질문을 남겼는데

너무나 감사하게도 한분이 이런 말씀을 해주셔서 따로 숫자를 받아서 반복문안에 넣어주니 정답처리가 되었다.

정답 풀이

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

let num = Number(input[0]);


for(let i = 1; i <= num; i++){
    let sum = 0;
    let count = 0;
    let newInput = input[i].split('');
    for(let j = 0; j < newInput.length; j++){
        if(newInput[j] == 'O'){
            count++;
            sum += count;
        } else if (newInput[j] == 'X'){
            count = 0;
        }
    }
    console.log(sum);
}

다음부터는 그냥 테스트 케이스가 있다고 하면 무조건적으로 숫자값으로 빼서 사용해야겠다.

profile
https://brgndy.me/ 로 옮기는 중입니다 :)

0개의 댓글