8958 OX퀴즈

const [count, ...input] = require('fs').readFileSync('dev/stdin').toString().split('\n');
input.map((grade) => {
  let init = 0;
  let result = 0;
  grade.split('').map((q) => {
    q === 'O' ? init++ : (init = 0);
    result += init;
  });
  console.log(result);
});

입력 값의 첫 줄은 케이스의 수라고 했다. 때문에, 첫 줄을 제외하고 input 을 받아오기 위해 구조분해 할당을 통해 count(케이스의 수) 와 나머지 input을 배열로 받아왔다.

console.log(count); // 5
consloe.log(input);
/* 
[ 'OOXXOXXOOO',
  'OOXXOOXXOO',
  'OXOXOXOXOXOXOX',
  'OOOOOOOOOO',
  'OOOOXOOOOXOOOOX'
] */

이중 포문을 사용하는 대신 더 간결한 이중 map 함수를 사용했고 input 배열을 또 한번 split 함수를 사용해 각 채점 결과를 배열화 했다! 채점 결과가 O 라면 init 값을 1씩 증가, 아니라면 0으로 초기화하여 더하기 할당 연산자를 통해 result 값을 도출했다.