TIL19-03 JS 백준 8958 "OOXXO" 문제

김태혁·2023년 1월 31일
0

TIL

목록 보기
68/205
  • 문제 설명
    "OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다.
    "OOXXOXXOOO"의 점수는 1+2+0+0+1+0+0+1+2+3 = 10점이다.
    첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 길이가 0보다 크고 80보다 작은 문자열이 주어진다. 문자열은 O와 X만으로 이루어져 있다.
  • 풀이 과정
    • 백준 문제를 처음 접해서 input값을 먹이는데 애를 먹었다.
    • input값은 간단히 검색을 통해 'fs'방법으로 받아 올 수 있었다.
    • 받아온 값을 해당 줄의 문자열에서 문자 하나씩 가지고 온 후 "O"이면 카운트해준다.
    • 아니면 다시 카운트를 0으로 만들고, 카운트된 값들을 더해준다.
    • 카운트된 값을 반환하고, 다음 줄로 넘어가서 같은 동작을 반복한다.
let input = require('fs').readFileSync('입력.txt').toString().split('\n');
//JS 백준문제의 입력값을 받기 위한 코드이다. 
// '입력.txt'는 입력값을 저장할 파일이고, 백준 페이지에서 정답을 확인하기 위해선 '/dev/stdin'으로 바꿔줘야한다.
let num = Number(input[0]);

for (let i = 1; i <= num; i++) {
  let count = 0; //"O"의 갯수 카운트값 초기값 선언
  let sum = 0; //카운트 값들의 합 초기값 선언
 
  for (let j = 0; j < input[i].length; j++) {
    
    if (input[i][j] === "O") {
      count++;   // 각줄의 한글자씩 가져와 "O"와 같은지 파악
    } else {      // 같다면 카운트
      count = 0;  //아니다면 다시 카운트를 0으로
    }
    sum += count; // 카운트된 값들을 더해준다.
  }
  
  console.log(sum); // 카운트된 값들의 합이 찍히고 다음 줄로 넘어가서 반복한다.
}
profile
도전을 즐기는 자

0개의 댓글