업데이트:

🔍 문제


“OOXXOXXOOO”와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다.

문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수는 3이 된다.

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

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

⚪ 입력


첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 길이가 0보다 크고 80보다 작은 문자열이 주어진다.

문자열은 O와 X만으로 이루어져 있다.

⚪ 출력


각 테스트 케이스마다 점수를 출력한다.

📝 정답 코드


//입력 받기
const fs = require('fs');
let input = fs.readFileSync('./input.txt').toString();
input = input.split('\n');
const inputC = Number(input[0]);

// 문제 풀기
for(let i=1; i<=inputC; i++) {
  let count =0;
  let sum = 0;

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

💻 CODE REVIEW

😥 for문을 사용해 연속한 O끼리 묶어보려고 했는데 이 생각으로는 코드를 짜기 어려워서 구글에 찾아봤다.
🧐 블로그를 찾아보니 거의 2중 for문으로 해결했다. 연속해서 맞으면 COUNT 값을 올려서 SUM에 저장하고 틀리면 COUNT를 0으로 초기화하는 방법이다.
😊 배열 안에 stirng 값이 들어있을 때, 한 글자씩 나누어 2차원 배열로 표현이 가능하다. 예를 들어 input[1] = {OOXOXOXO} 일 때 input[1][0] = O, input[1][2] = X 가 된다는 것을 기억하자!

댓글남기기