반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 파이썬
- Baekjoon
- 10926
- 입문
- 구현
- HTML
- 문제풀이
- 알고리즘
- C Programming
- VS
- C 언어
- 설명
- greedy
- 10807
- CSS
- Beakjoon
- 심화1
- 친절한 설명
- Python
- 문자열
- 꾸준히
- implement
- 코드엔진
- 그리디
- Implemention
- C
- c언어
- 정리
- 백준
- 초보
Archives
- Today
- Total
안경잡이 구루루
백준 25206 (너의 평점은) [Python/ 파이썬] 본문
반응형
https://www.acmicpc.net/problem/25206
나:
score = {'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}
average = 0
totall = 0
for i in range(20):
lecture, credit, grade = input().split()
if grade =='P':
continue
else:
average += float(credit)*score[grade]
totall +=float(credit)
print(average/totall)
완성된 코드는 위와 같다.
(1)
score = {'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}
average = 0
totall = 0
과목평점을 점수로 바꾸기 위해 딕셔너리를 이용해 해당 등급에 따른 점수를 score 변수에 담았다.
average 와 totall 은 순서대로 학점 * 과목평점, 학점의 총합을 담기위해 만들었다.
(2)
for i in range(20):
lecture, credit, grade = input().split()
if grade =='P':
continue
else:
average += float(credit)*score[grade]
totall +=float(credit)
입력은 총 20 줄로 고정되어 있기 때문에 for 반복문을 이용해 20번 입력받기로 했다.
입력은 공백을 기준으로 과목명, 학점, 등급을 순서대로 받았다.
이때 등급이 P인 과목은 계산해서 제외해야 하기 때문에 조건문 if를 이용해 P가 나오면 그 반복을 넘기는 continue 사용
P 외의 경우는 반복이 끝나 최종적으로 계산이 될 때까지 앞서 만들었던 변수에 더해줌.
(3)
print(average/totall)
최종적으로 전공과목별 (학점 × 과목평점)의 합을 학점의 총합으로 나눈 값을 출력
다른사람:
출처 https://calkolab.tistory.com/entry/baekjoon-python-25206
rating = ['A+', 'A0', 'B+', 'B0', 'C+', 'C0', 'D+', 'D0', 'F']
grade = [4.5, 4.0, 3.5, 3.0, 2.5, 2.0, 1.5, 1.0, 0]
total = 0 # 학점 총합을 담을 변수
result = 0 # (학점 * 과목평점) 총합을 담을 변수
for _ in range(20) :
s, p, g = input().split()
p = float(p)
if g != 'P' : # 등급이 P인 과목은 계산 안함
total += p
result += p * grade[rating.index(g)]
print('%.6f' % (result / total))
완성된 코드는 위와 같다.
위 코드에서 주목할 부분은 크게 두 부분으로 볼 수 있다.
if g != 'P' : # 등급이 P인 과목은 계산 안함
total += p
result += p * grade[rating.index(g)]
(1) 등급이 P인 과목은 계산 자체를 안해 좀 더 빠르게 계산한 것
print('%.6f' % (result / total))
(2) 출력할 때 깔끔하게 문제의 출력처럼 소숫점 6자리 까지 표현한 부분이다.
이떄 문자를 출력시 % 를 이용해 표현함.
%서식문자 | 의미 |
%s | 문자열 |
%d | 정수 |
%f | 실수 |
반응형
'파이썬(Python) > 문제풀이(백준,BaekJoon)' 카테고리의 다른 글
백준 2444 (별 찍기 -7 ) [Python/파이썬] (0) | 2023.08.30 |
---|---|
백준 10988 (팰린드롬인지 확인하기) [Python/파이썬] (0) | 2023.08.29 |
백준 3003 (킹, 퀸, 룩, 비숍, 나이트, 폰) [Python/파이썬] (0) | 2023.08.26 |
백준 25083 (새싹) [Python/파이썬] (0) | 2023.08.26 |
백준 9086 (문자열) [Python/파이썬] (0) | 2023.08.25 |