내 학점을 구해줘

문제

언어

  • JavaScript

순서도

  1. 각 학기마다 입력받은 학점과 성적 정보를 이용해서 총 학점과 평점 구하기

문제 풀이 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();
});