728x90
문제 접근
- 학생들의 중간고사, 기말고사, 과제점수가 주어졌을 때 k번째 학생의 학점을 구하는 문제
- 시뮬레이션 문제로 접근하여 아래와 같은 로직으로 구현함
구현 과정
- 문제 조건에 따른 학생별 평점 저장(몇번째 학생인지를 저장하기 위해 배열+튜플 활용)
- 평점을 기준으로 내림차순 정렬
- N/10을 기준으로 k번째 학생의 순위를 판별
- 순위에 따른 학점 출력
정답 코드
test = int(input())
credit = {0:'A+', 1:'A0', 2:'A-', 3:'B+', 4:'B0', 5:'B-', 6:'C+', 7:'C0', 8:'C-', 9:'D0'}
for t in range(test):
n, k = map(int, input().split())
score = []
for i in range(1, n+1):
first, second, assign = map(int, input().split())
# 학생별 성적 저장
num = first * (35 /100) + second * (45 /100) + assign * (20 / 100)
score.append((i, num))
# 성적순 내림차순 정렬
sorted_score = sorted(score, key=lambda x: x[1], reverse=True)
# 성적을 나누는 기준
standard = n // 10
# k번째 학생 찾기
for index, element in enumerate(sorted_score):
if element[0] == k:
# k 번째 학생의 순위
number = index // standard
break
print(f'#{t+1}', credit[number])
'알고리즘 > SW Expert Academy' 카테고리의 다른 글
SWEA - 2001. 파리 퇴치(python) (0) | 2023.06.22 |
---|---|
SWEA - 간단한 소인수 분해(1945, python) (0) | 2023.06.02 |