알고리즘
[BOJ] 25206번 - 너의 평점은(JS)
로돌씨
2024. 5. 19. 14:08
출처 - https://www.acmicpc.net/problem/25206
문제
인하대학교 컴퓨터공학과를 졸업하기 위해서는, 전공평점이 3.3 이상이거나 졸업고사를 통과해야 한다. 그런데 아뿔싸, 치훈이는 깜빡하고 졸업고사를 응시하지 않았다는 사실을 깨달았다!
치훈이의 전공평점을 계산해주는 프로그램을 작성해보자.
전공평점은 전공과목별 (학점 × 과목평점)의 합을 학점의 총합으로 나눈 값이다.
인하대학교 컴퓨터공학과의 등급에 따른 과목평점은 다음 표와 같다.

P/F 과목의 경우 등급이 P또는 F로 표시되는데, 등급이 P인 과목은 계산에서 제외해야 한다.
과연 치훈이는 무사히 졸업할 수 있을까?
예제:
ObjectOrientedProgramming1 3.0 A+
IntroductiontoComputerEngineering 3.0 A+
ObjectOrientedProgramming2 3.0 A0
CreativeComputerEngineeringDesign 3.0 A+
AssemblyLanguage 3.0 A+
InternetProgramming 3.0 B0
ApplicationProgramminginJava 3.0 A0
SystemProgramming 3.0 B0
OperatingSystem 3.0 B0
WirelessCommunicationsandNetworking 3.0 C+
LogicCircuits 3.0 B0
DataStructure 4.0 A+
MicroprocessorApplication 3.0 B+
EmbeddedSoftware 3.0 C0
ComputerSecurity 3.0 D+
Database 3.0 C+
Algorithm 3.0 B0
CapstoneDesigninCSE 3.0 B+
CompilerDesign 3.0 D0
ProblemSolving 4.0 P
출력:
3.284483
풀이
const input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n').map(item=>item.split(' '));
//객체로 gradeTable에 등급과 점수를 저장함
gradeTable = {
"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
}
sum = 0;
total = 0;
//for문을 이용해 input의 요소를 subject , score , grade로 할당해주고
for( let [subject , score , grade ] of input){
//P는 과목에서 제외해야하기때문에
if(grade === 'P'){
continue;
}
//sum 에 학점과 치훈이의 등급을 곱한값을 더해주고
sum+= Number(score) * gradeTable[grade]
//학점을 다 더해준 값을 할당해주고
total += Number(score)
}
//출력
console.log(sum/total)
객체에 key-value값을 이용해 key에 등급을 , value에 점수를 할당시켰다.
for(let [x,y,z]of arr ) => arr 의 요소를 x,y,z 로 할당시킴
gradeTable의 객체를 통해 grade와 같은 객체요소의 이름을 불러와 value값을 이용했고 다 더해준뒤 전체 학점을 나누어 주었다.