백준/Python

[백준] 5800번: 성적 통계_실버5 (Python)

슈딩이 2023. 8. 16. 20:16

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

 

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번

알고리즘 분류

 

문제 - 1 페이지

 

www.acmicpc.net

 


틀린 코드

k = int(input())

for i in range(k):
    score = list(map(int, input().split()))
    del score[0]
    gap = 0

    score.sort(reverse=True)

    for j in range(len(score)-1):
        if score[j] - score[j+1] > gap:
            gap = score[j] - score[j+1]

    print('Class %d' %(i+1))
    print('Max %d, Min %d, Largest gap %d' % (max(score), min(score), gap) , end ='')

 

맞은 코드

k = int(input())

for i in range(k):
    score = list(map(int, input().split()))
    del score[0]
    gap = 0

    score.sort(reverse=True)

    for j in range(len(score)-1):
        if score[j] - score[j+1] > gap:
            gap = score[j] - score[j+1]

    print('Class %d' %(i+1))
    print('Max %d, Min %d, Largest gap %d' % (max(score), min(score), gap))

 

입력받은 첫번째 수가 학생 수라는 것을 주의해야 한다.

 

내림차순으로 리스트를 정렬해주고 앞 숫자와 뒤 숫자를 뺀 값들을 gap과 비교하며 크면 gap을 업데이트 해줬다.

 

최댓값과 최솟값은 함수를 사용했다.

 

처음에 end 없이 출력하니까 한 줄이 띄어져서 나오길래 출력 형식 맞추려고 end='' 붙여서 제출을 했다.

오타도 없는 거 확인 했는데 계속 틀렸습니다가 떠서 혹시나하고 end옵션을 제거했더니 맞았다.....

 

이건 end=''를 붙인 출력인데 왜 이렇게 나오는지 모르겠다.