출력값
[Running] node "c:\바탕 화면\백준알고리즘\SolveBaekjoon\test\6단계\n25206.js"
3.2844827586206895
[Done] exited with code=0 in 0.075 seconds
문제해결방법
맨처음에 입출력을 const fs = require('fs')로 받아와
fs 모듈로 풀어보려했지만 어디서 계속 오류가 나는지 NaN값이 출력이 계속되었고const readline = require("readline"); try { const rl = readline.createInterface({ input: fs.createReadStream("SolveBaekjoon/answer/level6/n25206.txt"), output: process.stdout, terminal: false, });
readline 방식으로 입출력을 해봤더니 오류없이 해결이 되었습니다.
readline 모듈:
목적: readline 모듈은 터미널이나 파일에서 데이터를 읽을 때 행 단위로 처리하기 위한 모듈입니다.
사용 예시: 대화형 프로그램이나 텍스트 파일에서 한 줄씩 데이터를 읽거나 처리할 때 주로 사용됩니다.
주요 함수: readline.createInterface(options): 인터페이스를 생성하는 함수.
rl.question(query, callback): 사용자에게 질문을 묻고, 사용자의 답변을 처리하는 함수.
rl.on('line', callback): 한 줄씩 데이터를 처리하는 이벤트 핸들러 함수.fs 모듈
목적: fs 모듈은 파일 시스템과 상호 작용하기 위한 모듈로, 파일을 읽고 쓰거나 디렉토리를 조작하는 등의 기능을 제공합니다.
사용 예시: 파일의 내용을 읽어오거나, 파일에 쓰는 등의 파일 시스템 관련 작업에서 사용됩니다.
주요 함수:
fs.readFile(path, options, callback): 파일을 읽는 함수.
fs.writeFile(file, data, options, callback): 파일을 쓰는 함수.
fs.readdir(path, callback): 디렉토리 내의 파일 목록을 얻는 함수.
따라서, readline은 주로 입력 스트림에서 데이터를 행 단위로 처리할 때 사용되고, fs는 파일 시스템과 상호 작용할 때 사용됩니다. 두 모듈은 각각의 목적에 따라 사용되며, 서로 다른 유형의 작업에 특화되어 있습니다.
const readline = require("readline");
const fs = require("fs");
try {
//문제풀이용
// const rl = readline.createInterface({
// input: fs.createReadStream("SolveBaekjoon/answer/level6/n25206.txt"),
// output: process.stdout,
// terminal: false,
// });
//백준제출용
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
terminal: false,
});
let sum = 0;
let total = 0;
const table = {
"A+": 4.5,
A0: 4.0,
"B+": 3.5,
B0: 3.0,
"C+": 2.5,
C0: 2.0,
"D+": 1.5,
D0: 1.0,
F: 0.0,
};
rl.on("line", (line) => {
const [sub, score, grade] = line.trim().split(" ");
if (grade !== "P") {
sum += Number(score) * table[grade];
total += Number(score);
}
});
rl.on("close", () => {
if (total !== 0) {
const result = sum / total;
console.log(result);
} else {
console.log("총 학점이 0입니다.");
}
});
} catch (err) {
console.log(err.message);
}