공부하기/백준

[Python] 백준 풀기 5800 - 성적 통계

XEV 2022. 12. 25. 23:25

파이썬 백준 5800번

실버 5

https://www.acmicpc.net/problem/5800

 

5800번: 성적 통계

첫째 줄에 중덕 고등학교에 있는 반의 수 K (1 ≤ K ≤ 100)가 주어진다. 다음 K개 줄에는 각 반의 학생수 N (2 ≤ N ≤ 50)과 각 학생의 수학 성적이 주어진다. 시험 성적은 0보다 크거나 같고, 100보다

www.acmicpc.net

 

 

 

 

 

문제 보기

분류: 구현, 정렬

 

 

 

 

 

문제 풀기

두번째 줄부터 학생수와 점수를 같이 입력을 받기 때문에 deque() 를 이용하여 제일 왼쪽 학생수를 제거한다.

deque() 를 정렬하기 위해 list() 함수를 이용하여 변환하고 sort(reverse = True) 를 이용하여 내림차순 정렬을 한다.

내림차순 정렬으로 Max 와 Min 의 값은 찾아 졌고 인접한 점수의 가장 큰 gap 을 구하기 위해 for loop 을 돌려 인접한 두 value 의 차이를 절대값으로 찾아 Largese gap 으로 저장한다.

 

 

 

 

 

코드 보기

import sys
inputdata = sys.stdin.readline
from collections import deque


def fnGradeStatistics(class_x):
    class_dq.popleft()
    class_ls = list(class_dq)
    class_ls.sort(reverse = True)
    # print(class_ls)         # test print
    
    largestgap = 0
    for i in range(len(class_ls) - 1):
        gap = abs(class_ls[i] - class_ls[i + 1])
        if largestgap < gap:
            largestgap = gap
    # print(largestgap)           # test print
    
    print(f'Class {class_x}')
    print(f'Max {class_ls[0]}, Min {class_ls[-1]}, Largest gap {largestgap}')
    

if __name__ == "__main__":
    k = int(inputdata().strip())
    class_x = 0
    for _ in range(k):
        class_x += 1
        class_dq = deque(map(int, inputdata().split()))
        # print(class_dq)         # test print
        
        fnGradeStatistics(class_x)