새소식

⌨️ Algorithms/백준

[Python] 백준 25206번_너의 평점은

2023. 5. 17. 21:32

  • -

https://www.acmicpc.net/problem/25206

 

25206번: 너의 평점은

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

www.acmicpc.net

 

  • 치훈이의 전공평점을 계산해주기
  • 전공평점은 전공과목별 (학점 × 과목평점)의 합을 학점의 총합으로 나눈 값
  • 인하대학교 컴퓨터공학과의 등급에 따른 과목평점은 아래의 표와 같음
  • P/F 과목의 경우 등급이 P또는 F로 표시되는데, 등급이 P인 과목은 계산에서 제외

 

  • 입력
    • 20줄에 걸쳐 치훈이가 수강한 전공과목의 과목명, 학점, 등급이 공백으로 구분되어 주어짐
  • 출력
    • 치훈이의 전공평점을 출력
    • 정답과의 절대오차 또는 상대오차가 (10^{-4}) 이하이면 정답으로 인정
  • 제한
    • 1 ≤ 과목명의 길이 ≤ 50
    • 과목명은 알파벳 대소문자 또는 숫자로만 이루어져 있으며, 띄어쓰기 없이 주어짐. 입력으로 주어지는 모든 과목명은 서로 다름.
    • 학점은 1.0,2.0,3.0,4.0중 하나
    • 등급은 A+,A0,B+,B0,C+,C0,D+,D0,F,P중 하나
    • 적어도 한 과목은 등급이 P가 아님이 보장
  • 시간 제한: 1초
  • 메모리 제한: 1024 MB

 

"""
입출력 예시)

(예제 입력 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
                        -> 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
                    -> 0.000000
"""

 

 

## 의사코드 ##

# 등급별 과목평점 -> 딕셔너리
# grade_dic = {'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}]

# total_score = 0 # 학점의 총합
# total = 0 # (학점 x 과목평점)의 합

# for _ in range(20):
      # 등급이 P인 과목은 계산에서 제외
#     if grade == 'P':
#         continue
#     else:
          # 학점의 총합
#         total_score += float(score)
          # (학점 x 과목평점)의 합
#         total += float(score) * float(grade_dic[grade])

# 전공평점 = 전공과목별 (학점 × 과목평점)의 합 / 학점의 총합
# print(format(total / total_score, ".6f"))

 

 

 

 

# 등급별 과목평점
grade_dic = {'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}
total_score = 0 # 학점의 총합
total = 0 # (학점 x 과목평점)의 합
for _ in range(20):
    name, score, grade = input().split()
    # 등급이 P인 과목은 계산에서 제외
    if grade == 'P':
        continue
    else:
        # 학점의 총합
        total_score += float(score)
        # (학점 x 과목평점)의 합
        total += float(score) * float(grade_dic[grade])

# 전공평점 = 전공과목별 (학점 × 과목평점)의 합 / 학점의 총합
print(format(total / total_score, ".6f"))

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다!