728x90
반응형
1. 문제 설명
2. 풀이과정
해당 문제는 입력받은 등급을 기준으로 P 등급이 아닌 과목의 전공평점을 구하는 문제이다.
각 등급별 과목평점을 미리 딕셔너리를 통해 저장해 두고 전공과목별 점수를 계산할 때 활용한다.
각 입력은 한 번에 입력되므로 문자열 형태로 입력받은 다음 계산할 때 알맞은 자료의 형태로 변환하여 계산한다.
- sys.stdin.readline() 함수를 사용하기 위해 sys 모듈을 불러온다. import sys
- 등급에 따른 과목평점을 딕셔너리로 저장한다. 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}
- (학점 x 과목평점)의 합을 저장할 변수를 생성하고 초기화한다. total = 0
- 학점의 총합을 저장할 변수를 생성하고 초기화한다. point_total = 0
- 총 20번을 반복하며 for _ in range(20)
- 전공과목명과 학점, 등급을 문자열 형태로 입력받는다. subject, point, grade = map(str, sys.stdin.readline().split())
- 등급이 P가 아닐 경우에만 계산하며 if (grade != 'P')
- (학점 x 과목평점)의 결과를 더하고 total += float(point) * grade_dic[grade]
- 학점의 총합에 학점도 따로 더한다. point_total += float(point)
- 전공과목별(학점 x 과목평점)의 합을 학점의 총합으로 나눈 결과를 출력한다. print(total / point_total)
반응형
3. 소스코드
import sys
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 = 0
point_total = 0
for _ in range(20):
subject, point, grade = map(str, sys.stdin.readline().split())
if (grade != 'P'):
total += float(point) * grade_dic[grade]
point_total += float(point)
print(total / point_total)
728x90
반응형
'백준' 카테고리의 다른 글
[백준] 2745번 : 진법 변환 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.10.12 |
---|---|
[백준] 2563번 : 색종이 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.10.10 |
[백준] 10798번 : 세로읽기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.10.08 |
[백준] 2566번 : 최댓값 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.10.06 |
[백준] 10988번 : 팰린드롬인지 확인하기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.10.02 |
[백준] 10811번 : 바구니 뒤집기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.09.30 |
[백준] 10813번 : 공 바꾸기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.09.28 |
[백준] 10810번 : 공 넣기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.09.26 |