첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 길이가 0보다 크고 80보다 작은 문자열이 주어진다. 문자열은 O와 X만으로 이루어져 있다.
각 테스트 케이스마다 점수를 출력한다.
5
OOXXOXXOOO
OOXXOOXXOO
OXOXOXOXOXOXOX
OOOOOOOOOO
OOOOXOOOOXOOOOX
10
9
7
55
30
입력값을 정제해서 ['OOXXOXXOOO','OOXXOOXXOO','OXOXOXOXOXOXOX','OOOOOOOOOO','OOOOXOOOOXOOOOX']
와 같이 만든 후 map을 이용해서 각 요소의 점수로 이루어진 새로운 배열을 만들어 \n
으로 join하여 한번에 출력한다.
console.log(require('fs').readFileSync('/dev/stdin').toString().trim().split('\n').slice(1)
.map(e=>{ //e='OOXXOXXOOO'
let count=0;
return e.split('') //['O','O','X','X',...]
.map(e=>{ //e='O',e='O',e='X',..
count=(e==='O'?count+1:0);//'X'를 만나면 점수 누적 초기화
return count;
}) //[1,2,0,0,1,0,0,1,2,3]
.reduce((prev,curr)=>prev+curr); //10
}).join('\n')
);
for문을 중첩하여 sum에 count를 누적해 하나의 'OOXXOXXOOO' 요소의 점수가 계산되면 바로 바로 출력한다.
const [n,...arr]=require('fs').readFileSync('/dev/stdin').toString().trim().split('\n');
for(let i=0;i<n;i++){
let count=0;
let sum=0;
for(let j=0;j<arr[i].length;j++){
arr[i][j]==="O"?count++:count=0;
sum+=count;
}
console.log(sum);
}