너의 평점은(25206번)

PearLine_Zero·2024년 3월 19일

하루에 1커밋 CodingTest

목록 보기
58/110
post-thumbnail
  • 티어 : Sliver 5
  • 정답여부 : 정답
  • 알고리즘 유형 : 구현, 문자열
  • 시간 제한 : 1초

💡문제

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

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

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

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

과목평점 등급과목평점
A+4.5
A04.0
B+3.5
B03.0
C+2.5
C02.0
D+1.5
D01.0
F0.0

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

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

💡입력

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

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

💡출력

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

💡예제 입력 1

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

💡예제 출력 1

3.284483

💡예제 입력 2

BruteForce 3.0 F
Greedy 1.0 F
DivideandConquer 2.0 F
DynamicProgramming 3.0 F
DepthFirstSearch 4.0 F
BreadthFirstSearch 3.0 F
ShortestPath 4.0 F
DisjointSet 2.0 F
MinimumSpanningTree 2.0 F
TopologicalSorting 1.0 F
LeastCommonAncestor 2.0 F
SegmentTree 4.0 F
EulerTourTechnique 3.0 F
StronglyConnectedComponent 2.0 F
BipartiteMatching 2.0 F
MaximumFlowProblem 3.0 F
SuffixArray 1.0 F
HeavyLightDecomposition 4.0 F
CentroidDecomposition 3.0 F
SplayTree 1.0 F

💡예제 출력 2

0.000000

💡문제요약

치훈이의 전공 평점을 계산해주면 되는 문제

💡알고리즘 설계

  1. dict로 인하대 컴공과 등급에 따른 과목평점을 만듬
  2. 학점 합 변수와 학점 * 등급의 변수를 두개 만들어줌
  3. 20개의 수강한 전공과목의 과목명, 학점, 등급을 공백으로 받음
  4. 학점이 실수형이니 float 붙어서 합 변수에 넣어줌
  5. 받은 등급을 dict에서 찾아서 학점과 계산해서 변수에 넣어줌
  6. 실수로 나타내야 하기에 //이 아닌 /로 나눠서 계산

💡작성코드

  • python
grades = {"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} # 딕서녀리로 값을 저장해줌 키와 값!!
sum_exam_score = 0 # 학점의 총 합
score_grades_sum = 0 # 학점과 과목평점의 곱의 합
for i in range(20):
    exam_subject, exam_score, exam_grades= input().split()
    if exam_grades != "P":
        sum_exam_score += float(exam_score)
        score_grades_sum += float(exam_score) * grades[exam_grades]
print(score_grades_sum / sum_exam_score)       

💡틀린 이유 or 수정할 부분

다른 사람들은 인덱스를 이용하여 아름답게 푼 사람들을 봄 ..ㅎㅎ

💡틀린 부분 수정 or 다른풀이

  • python
import sys
score = ['A+' , 'A0' ,'B+' , 'B0' , 'C+','C0','D+','D0','F']
pyeong = [4.5 , 4.0 , 3.5 , 3.0 , 2.5 , 2.0 , 1.5 , 1.0 , 0.0]
isu_hak = 0
hak = 0
for i in range(20):
    A= list(sys.stdin.readline().split())
    if A[2]!='P':
        hak+= pyeong[score.index(A[2])] * float(A[1])
        isu_hak += float(A[1])
print(hak/ (isu_hak))    

💡느낀점 or 기억할 정보

다음엔 인덱스로 해보자!!

profile
https://baesaa0304.tistory.com 블로그 이사합니다~

0개의 댓글