[백준] 자바스크립트 25206번

DONNIE·2023년 5월 15일
0

algorithms

목록 보기
27/32

문제

인하대학교 컴퓨터공학과를 졸업하기 위해서는, 전공평점이 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인 과목은 계산에서 제외해야 한다.
과연 치훈이는 무사히 졸업할 수 있을까?

입력

20줄에 걸쳐 치훈이가 수강한 전공과목의 과목명, 학점, 등급이 공백으로 구분되어 주어진다.

출력

치훈이의 전공평점을 출력한다.
정답과의 절대오차 또는 상대오차가
(10^{-4}) 이하이면 정답으로 인정한다.

제출

const infos = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n').map(item=>item.split(' '));

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
} // key-value 로 저장해둔평점

for(let [sub, score, grade] of infos) {
   
    let num = 0;
    
   if(grade==='P') {
        continue;
    } // p일 경우 빼고 계산
    sum += Number(score)*table[grade] // 학점에 따라서 key 값으로 table에서 빼와서 계산
    total += Number(score); // total 값 저장
} 
console.log(sum/total); // 전공과목별 학점*평점을 총점으로 나누어 출력

이전제출

const infos = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n').map(item=>item.split(' '));

let sum = 0;
let total = 0;

for(let [sub, score, grade] of infos) {
   
    let num = 0;
    
    if(grade==='A+') {
        num = 4.5
    }else if(grade==='A0') {
        num = 4.0
    }else if(grade==='B+') {
        num = 3.5
    }else if(grade==='B0') {
        num = 3
    }else if(grade==='C+') {
        num = 2.5
    }else if(grade==='C0') {
        num = 2 
    }else if(grade==='C+') { // 오타..ㅡㅡ
        num = 1.5 
    }else if(grade==='C0') { // 오타..ㅡㅡ
        num = 1
    }else if(grade==='P') {
        continue;
    }
    total += Number(score)*num
    sum += Number(score);
}
console.log(total/sum);
  • 아.. D+/D0 가 오타나서..오답이었음 ㅜ 이렇게 해도 정답됨 ㅜㅋㅇ루인르ㅟㅏㅇㄴ
profile
후론트엔드 개발자

0개의 댓글