study/알고리즘 문제 풀이

[javaScript] Softter - 성적 평균

dddzr 2024. 1. 10. 23:42

 

const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout
});

let n, k;
let grades = [];
rl.question('', (input1) => {
  [n, k] = input1.split(' ').map(Number);

  rl.question('', (input2) => {
    grades = input2.split(' ').map(Number);

    // for (let i = 0; i < k; i++) {
    //     rl.on("line", function(line){
    //         const [start, end] = line.split(' ').map(Number);
    //         printAVG(Number(start), Number(end));      
    //         rl.close();
    //     })
    // }

      let rangeCount = 0;
      rl.on('line', (rangeInput) => {
        const [start, end] = rangeInput.split(' ').map(Number);
        printAVG(Number(start), Number(end));  
        rangeCount++;
    
        if (rangeCount === k) {
          rl.close();
        }
      });
  });
});

function printAVG (start, end) {
    let ret = 0;
    for(let i = start-1; i < end ;i++){
        ret += Number(grades[i]);
    }    
    
    ret = ret / (end - start + 1) * 100;
    ret = Math.round(ret)/100;
    const roundedValue = ret.toFixed(2);
    console.log(roundedValue)
}

*for을 사용하면 1번 밖에 실행 안됨.
rl.question은 비동기 함수이기 때문에, 반복문에서 사용될 때 문제가 발생할 수 있다. 반복문이 순회하면서 여러 개의 rl.question이 동시에 실행되기 때문에, 마지막 rl.close()가 바로 실행돼서 프로그램이 종료되기 전에 입력이 완료되지 않은 상태일 수 있다.