Python/online judge

백준 [25206.너의 평점은] | Python

구름솜:D 2023. 11. 17. 18:04
728x90

✏️ 문제

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

 

25206번: 너의 평점은

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

www.acmicpc.net

 

✏️ 풀이방법

1.  하나의 리스트에 과목명, 학점, 등급을 담기

2.  학점*과목평점, 학점을 담을 리스트를 선언하여 등급이 P가 아닐 때만 값을 추가하기

3.  학점*과목평점과 학점을 담은 리스트를 활용하여 학점의 총합을 연산하기

 

 

📌 코드

grade = [['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]]
test = []
total = [] #학점*과목평점 값을 담을 리스트
score = [] #학점을 담을 리스트

for i in range(20):
    test.append(list(input().split()))
    test[i][1] = float(test[i][1]) #연산할 수 있도록 형변환

for i in range(20):
    if test[i][2] == 'P':
        continue
    else:
        for j in range(9):
            if test[i][2] == grade[j][0]:
               total.append(test[i][1]*grade[j][1])
    score.append(test[i][1])
result = sum(total)/sum(score)

print(result)

 

📌 결과

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.2844827586206895

 

 

🔎 다른풀이

grade_list = ["A+", "A0", "B+", "B0", "C+", "C0", "D+", "D0", "F"]
score_list = [4.5, 4.0, 3.5, 3.0, 2.5, 2.0, 1.5, 1.0, 0.0]

tot_grade = 0 # 누적 단위수(sum 단위수)
tot_score = 0 # 누적 성적(sum 단위수x성적)

for i in range(20):
    test = list(map(str, input().strip().split()))
    hakjum = float(test[1])
    if test[2] == "P":
        continue
    else:
        idx = grade_list.index(test[2])
        score = score_list[idx]
        tot_score += (hakjum*score)
        tot_grade += hakjum

avg_score = float(tot_score/tot_grade)
print(avg_score)

-  학점*과목평점과 학점을 리스트에 담지 않고 누적시키며 연산 할 수 있다.