안녕하세요. 성조입니다.
이 포스팅은 Python 3 버전을 기준으로 풀이됐습니다.
문제 출처
https://www.acmicpc.net/problem/25206
25206번: 너의 평점은
인하대학교 컴퓨터공학과를 졸업하기 위해서는, 전공평점이 3.3 이상이거나 졸업고사를 통과해야 한다. 그런데 아뿔싸, 치훈이는 깜빡하고 졸업고사를 응시하지 않았다는 사실을 깨달았다! 치
www.acmicpc.net
문제
인하대학교 컴퓨터공학과를 졸업하기 위해서는, 전공평점이 3.3 이상이거나 졸업고사를 통과해야 한다. 그런데 아뿔싸, 치훈이는 깜빡하고 졸업고사를 응시하지 않았다는 사실을 깨달았다!
치훈이의 전공평점을 계산해 주는 프로그램을 작성해 보자.
전공평점은 전공과목별 (학점 × 과목평점)의 합을 학점의 총합으로 나눈 값이다.
인하대학교 컴퓨터공학과의 등급에 따른 과목평점은 다음 표와 같다.
입력
20줄에 걸쳐 치훈이가 수강한 전공과목의 과목명, 학점, 등급이 공백으로 구분되어 주어진다.
출력
치훈이의 전공평점을 출력한다.
정답과의 절대오차 또는 상대오차가
10^-4 이하이면 정답으로 인정한다.
코드
import sys
data_dict = {"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}
result = 0
total = 0
for _ in range(0, 20, 1):
input_data = sys.stdin.readline().split()
if input_data[2] == "P":
continue
total += float(input_data[1])
result += float(input_data[1]) * data_dict[input_data[2]]
GPA = result / total
conversion = format(GPA, '.6f')
print(conversion)
풀이
1. 데이터를 고정 값으로 20개 씩 입력받기 때문에 반복문(for)의 범위를 지정한다.
2. P/F는 하나씩 있으며, P는 패스 F는 0을 입력할 수 있도록 한다. -> 위 딕셔너리 값에서 F를 지정하고 input_data [2] 번째 위치에 P가 입력되면 건너뛴다.
3. 전체 합계 변수와 (학점 * 과목 평점)을 연산해서 평점을 구할 수 있는 변수를 연산한다.
4. 과목 평점 값은 딕셔너리 값의 키 값으로 찾는다.
5. 둘을 위에 나온 조건처럼 평점 / 총점 값을 나눈다. 이후 format을 활용해서 소수점 0.000000 자리까지 나올 수 있도록 형식을 지정하고 출력한다.
오타나 이해가 안 가는 부분이 있다면 언제든지 댓글로 얘기해 주시면 도움될 수 있는 답변드릴 수 있도록 노력해 보겠습니다.
다음 포스팅 때 뵙겠습니다. 감사드립니다!
'백준 - Python' 카테고리의 다른 글
[백준 - 1316][Python] 그룹 단어 체커 (0) | 2023.03.03 |
---|---|
[백준 - 1920][Python] 수 찾기 (0) | 2023.03.02 |
[백준 - 1010][Python] 다리 놓기 (0) | 2023.02.26 |
[백준 - 11478][Python] 서로 다른 부분 문자열의 개수 (0) | 2023.02.22 |
[백준 - 11047][Python] 동전 0 (0) | 2023.02.21 |