개발/코딩테스트

[백준 | JavaScript] 25206 너의 평점은

prpn97 2023. 5. 23. 22:37

문제 설명

인하대학교 컴퓨터공학과를 졸업하기 위해서는, 전공평점이 3.3 이상이거나 졸업고사를 통과해야 한다. 그런데 아뿔싸, 치훈이는 깜빡하고 졸업고사를 응시하지 않았다는 사실을 깨달았다!

치훈이의 전공평점을 계산해주는 프로그램을 작성해보자.

전공평점은 전공과목별 (학점 × 과목평점)의 합을 학점의 총합으로 나눈 값이다.

인하대학교 컴퓨터공학과의 등급에 따른 과목평점은 다음 표와 같다.

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

P/F 과목의 경우 등급이 P또는 F로 표시되는데, 등급이 P인 과목은 계산에서 제외해야 한다.

과연 치훈이는 무사히 졸업할 수 있을까?

입출력

문제 풀이

const fs = require("fs");
let input = fs.readFileSync("./input.txt").toString().trim().split('\n');
let mypoint = 0
let mygrade = ''
let result = 0
let gradeToPoint = [4.5,4.0,3.5,3.0,2.5,2.0,1.5,1.0,0.0]
let grade = ['A+','A0','B+','B0','C+','C0','D+','D0','F']
let wholePoint = 0
for(let i = 0; i < input.length; i++){
  let splited = input[i].split(' ')
  mypoint = Number(splited[1])
  mygrade = splited[2]
if(mygrade!=='P'){
result+=mypoint*(gradeToPoint[grade.indexOf(mygrade)])
wholePoint+= mypoint
}
}
console.log(result/wholePoint)

구해야 하는 것 : 전공평점 = 전공과목별 (학점 × 과목평점)의 합 / 학점의 총합

받은 점수 및 과목평점 = mypoint, mygrade 

점수 및 과목평점 기준 = gradeToPoint, grade

 

ObjectOrientedProgramming1 3.0 A+ 과 같이

과목, 학점, 과목평점이 공백을 기준으로 구분되어 있다.

 

1. split하게 되면, 배열에 과목, 학점, 과목평점이 나뉘어 담긴다. 

그래서 mypoint는 1번인덱스인 학점, mygrade는 2번인덱스인 과목평점을 담았다.

 

2. 학점*과목평점의 합 / 학점의 총합인데, 과목평점이 P일 경우는 제외해야 한다.

그래서 P가 아닐 경우에만 result에 각 학점*과목평점을 해주었다.

과목평점은 등급당 몇점인지 각 배열에 기준을 적어놓고,해당 mygrade등급이

gradeToPoint의 몇번 인덱스에 있는지 indexOf를 사용하여 어떤 점수인지 알 수 있다.

 

그리고 학점의 총합은 mypoint를 누적한 값으로 새 변수에 더해주어

계산하면 답을 구할 수 있다.

코멘트

다른 문제에 비해 푸는 시간이 오래걸리지 않았다. 

문제에 쓰여있는 그대로의 조건을 충족했더니 바로 문제가 풀렸다.

 

 

728x90