출처 - 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값을 이용했고 다 더해준뒤 전체 학점을 나누어 주었다.
'알고리즘' 카테고리의 다른 글
[알고리즘] 프로그래머스 LV.0 - 조건에 맞게 수열변환2 (0) | 2024.05.26 |
---|---|
[BOJ]2720번 - 세탁소 사장 동혁(JS) (0) | 2024.05.22 |
[BOJ]2941번 - 크로아티아 알파벳 (0) | 2024.05.17 |
[BOJ] 10813번 - 공 바꾸기(JS) (0) | 2024.05.09 |
[BOJ]2525번 - 오븐 시계(JS) (0) | 2024.05.05 |