BOJ[10984] - 내 학점을 구해줘 by JavaScript
내 학점을 구해줘
문제
언어
- JavaScript
순서도
- 각 학기마다 입력받은 학점과 성적 정보를 이용해서 총 학점과 평점 구하기
문제 풀이 step 1
- 근우를 위해서 주어지는 정보를 이용해서 각 학기마다의 총 학점과 평점을 출력하는 문제입니다.
- 총 학점은 각 학점 정보를 모두 더해주면 됩니다.
- 평점은 각 학점 정보와 각 성적 정보를 서로 곱한 후, 그 곱한 값들을 모두 더한 다음에 총 학점으로 나눠주면 됩니다.
- 그리고 소수점 한 자리까지만 남겨놓고 출력해야 하므로
Number.toFixed(n)메서드를 이용합니다.- toFixed(n) 메서드는 숫자를 고정 소수점 표기법으로 표기해 반환합니다.
- 추가 설명은 주석으로 작성하겠습니다.
후기
- 본 문제에 대한 포스트를 하게 된 계기는 제가 평점을 구하는 공식을 몰라서 여러번의 시행착오를 겪었기 때문입니다.
- 그냥 단순하게 성적 정보를 다 더한 다음에 과목 수로 나눠주면 되는 줄 알았는데 그냥 더하면 틀렸습니다.
- 학점 정보를 곱한 후에 더해야 했고, 과목 수로 나누는 것이 아니라 총 학점으로 나누어야 했습니다.
- 본 문제 덕분에 평점을 구하는 공식을 배울 수 있었습니다.
Reference.
소스 코드
const readline = require("readline");
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
function solution(input) {
// 학기 수
let t = Number(input[0]);
let res = "";
let index = 1;
while (t-- > 0) {
// 과목 수
const n = Number(input[index++]);
let [credits, grades] = [0, 0];
for (let i = 0; i < n; i++) {
const [c, g] = input[index++].split(" ").map(Number);
// 총 학점
credits += c;
// 평점 (나중에 총 학점으로 나눠줘야 함)
grades += c * g;
}
res += `${credits} ${(grades / credits).toFixed(1)}\n`;
}
return res;
}
let input = [];
rl.on("line", function (line) {
input.push(line);
}).on("close", function () {
console.log(solution(input));
process.exit();
});