SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
📌 작성한 코드
import math
ranking = ['A+','A0','A-','B+','B0','B-','C+','C0','C-','D0']
T = int(input())
for test in range(1, T + 1):
n, idx = map(int, input().split())
arr = []
for y in range(1,n+1):
middle, final, assignment = map(int, input().split())
score = (middle * 35 + final * 45 + assignment * 20 ) / 100
arr.append([y, score])
sorted_arr = sorted(arr, key = lambda x : x[1], reverse=True)
num = n // 10
for i in range(n):
if sorted_arr[i][0] == idx:
rank_idx = math.ceil((i+1)/num);
print(f'#{test} {ranking[rank_idx-1]}')
📌 풀이
1. 학생 수와 등급을 알고 싶은 학생 번호 입력받기
n, idx = map(int, input().split())
2. 반복문을 돌면서 각 학생의 총 점수 구하기
- 중간,기말,과제의 점수를 입력받고, 비율을 계산해서 총 점수를 구한다
- 그리고 해당 점수와 학생의 번호를 리스트에 저장해서 모든 점수들이 모일 arr 리스트에 append한다
arr = []
for y in range(1,n+1):
middle, final, assignment = map(int, input().split())
score = (middle * 35 + final * 45 + assignment * 20 ) / 100
arr.append([y, score])
3. 점수를 기준으로 내림차순으로 정렬하기
- 각 요소의 1번 인덱스에 총 점수가 저장되어 있으니까 점수를 기준으로 정렬해준다 `key = lambda x : x[1]`
- 내림차순으로 정렬하기 위해 `reverse=True`로 설정
sorted_arr = sorted(arr, key = lambda x : x[1], reverse=True)
4. 정렬한 점수를 기준으로 학생의 점수 구하기
- num은 학점을 받을 수 있는 학생의 수이다. n명이 있으면 n/10명의 학생들에게 평점을 부여할 수 있기 때문

num = n // 10
for i in range(n):
if sorted_arr[i][0] == idx:
rank_idx = math.ceil((i+1)/num);
print(f'#{test} {ranking[rank_idx-1]}')
📌 사담
- math 쓰려면 import해줘야 하는거 넘 귀찮다.
- 자바스크립트에선 자동 사용이 가능해서 신경 안썼었는데, import 안하고 풀어서 계속 오류가 났었다

'알고리즘 > SWEA' 카테고리의 다른 글
| [Python] SWEA D2 : 1976 - 시각 덧셈 (0) | 2023.10.31 |
|---|---|
| [Python] SWEA D2 : 1946 - 간단한 압축 풀기 (0) | 2023.10.31 |
| [Python] SWEA D2 : 1984 - 중간 평균값 구하기 (0) | 2023.10.29 |
| [Python] SWEA D2 : 1989 - 초심자의 회문 검사 (0) | 2023.10.29 |
| [Python] SWEA D2 : 2001 - 파리퇴치 (0) | 2023.10.29 |