반응형

2755

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

 

2755번: 이번학기 평점은 몇점?

첫째 줄에, 백준이가 이번 학기에 들은 과목 수가 주어진다. 둘째 줄부터 N개의 줄에 각 과목의 과목명, 학점, 성적이 주어진다. 과목명은 알파벳 소문자와 숫자, 그리고 밑줄 (_)로만 이루어져 있

www.acmicpc.net

[정답]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import sys
def new_round(n):
    n *= 100
    return (int(n)+1)/100 if (n - int(n)) >= 0.5 else int(n)/100
= int(sys.stdin.readline())
total = 0
cnt = 0
grade = {'A+':4.3'A0':4.0'A-':3.7'B+':3.3'B0':3.0'B-':2.7
'C+':2.3'C0':2.0'C-':1.7'D+':1.3'D0':1.0'D-':0.7'F':0.0}
for n in range(N):
    x, y, z = sys.stdin.readline().strip().split()
    total += int(y) * grade[z]
    cnt += int(y)
print('{0:.2f}'.format(new_round(total/cnt)))
cs

.

.

.

[풀이]

딕셔너리를 이용하여 값들을 정리해준다.

입력받은 값들 중 학점과 성적만 건져서 계산해준다.

 

파이썬에 내장되어 있는 반올림 함수, round()는 일상에서 쓰는 반올림과 차이가 있다.

소수점 첫째자리에서 반올림할 때,

소수점 첫째자리가 0.5라면 앞자리의 짝홀에 따라 반올림이 달라진다.

예) 1.5 → 2 - - - - - - - - - -(홀) (올림)

       2.5 → 2 - - - - - - - - - -(짝) (버림)

       3.5 → 4 - - - - - - - - - -(홀) (올림)

따라서 new_round() 라는 함수를 만들어줬다.

 

결과를 출력할 때는 소수점 2자리까지 표현하기 위해서 format을 이용해준다.

print('{인덱스: .소수점자리 f}'. format(값))

 

간단한 문제이나, 세세한 부분을 무시하면 오류가 날 수 있다.

반응형

+ Recent posts