백준 코드 공부/파이썬

백준 5800 : 성적 통계 (Python)

GUuu9 2022. 2. 8. 13:37

문제

5800번: 성적 통계 (acmicpc.net)

 

5800번: 성적 통계

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

www.acmicpc.net


문제

한상덕은 이번에 중덕 고등학교에 새로 부임한 교장 선생님이다. 교장 선생님으로서 첫 번째 일은 각 반의 수학 시험 성적의 통계를 내는 일이다.

중덕 고등학교 각 반의 학생들의 수학 시험 성적이 주어졌을 때, 최대 점수, 최소 점수, 점수 차이를 구하는 프로그램을 작성하시오.

입력

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

출력

각 반에 대한 출력은 다음과 같이 두 줄로 이루어져 있다.

  • 첫째 줄에는 "Class X"를 출력한다. X는 반의 번호이며 입력으로 주어진 순서대로 1부터 증가한다.
  • 둘째 줄에는 가장 높은 점수, 낮은 점수, 성적을 내림차순으로 정렬했을 때 가장 큰 인접한 점수 차이를 예제 출력과 같은 형식으로 출력한다.

예제 입력 1 복사

2
5 30 25 76 23 78
6 25 50 70 99 70 90

예제 출력 1 복사

Class 1
Max 78, Min 23, Largest gap 46
Class 2
Max 99, Min 25, Largest gap 25

출처

ICPC > Regionals > South Pacific > South Pacific Region > 2011 ACM South Pacific Programming Contest A번

알고리즘 분류

 


 

import sys
input = sys.stdin.readline

LargestGap = 0
K = int(input())
classX = [[0]*50 for _ in range(100)]
classNum = []
for _ in range(K):
    classX[_] = list(map(int,input().split()))
    classNum.append(classX[_][0])
    classX[_].pop(0)
    classX[_] = sorted(classX[_])

for _ in range(K):
    LargestGap = 0
    for i in range(classNum[_] - 1):
        if classX[_][i+1] - classX[_][i] > LargestGap:
            LargestGap = classX[_][i+1] - classX[_][i]
    print("Class", _+1)
    print("Max", max(classX[_]), end=",")
    print(" Min" ,min(classX[_]), end=",")
    print(" Largest gap", LargestGap)

K값을 입력 받고 K회 만큼 입력 받을 배열을 생성합니다.

classNum은 학생들의 수를 따로 빼기 위함입니다.

K회 만큼 반복하며 첫번째 for문에서 반 학생 수와 입력 받은 성적을 한번에 받고 분리합니다. 이후 점수만 남아있는 classX배열을 정렬합니다.

다음 for문에서 연속된 값중 가장 차이가 큰 값을 구한 후 예제에 따라 출력합니다.

한줄로 출력할 경우 예제와 다르게 값 뒤 쉼표가 떨어져 있기때문에 분리해서 출력했습니다.

 

생각해보면 2차원 배열을 사용하지 않아도 문제를 풀 수 있었습니다. 


Git Hub

BaekJoon-Study/5800.py at python · GUuu9/BaekJoon-Study (github.com)

 

GitHub - GUuu9/BaekJoon-Study

Contribute to GUuu9/BaekJoon-Study development by creating an account on GitHub.

github.com