본문 바로가기
알고리즘/백준 solved.ac PS

[백준][solved.ac][Silver 5][Python] 5800번 : 성적 통계

by 빛밤하늘 2021. 5. 4.
반응형

밑의 링크는 백준에서의 문제 링크입니다.

 

5800번: 성적 통계

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

www.acmicpc.net

 

 

 

 

 

 

 

파이썬 코드와 결과입니다.

# 첫째 줄에 반의 수 K를 입력합니다.
# 1 <= K <= 100
K = int(input())

# 반의 수 K만큼 반복합니다.
for class_index in range(K):
    # 반의 학생수 N, 각 학생의 수학 성적을 공백으로 구분해 입력합니다.
    # 2 <= N <= 50
    # 시험 성적은 0보다 크거나 같고, 100보다 작거나 같은 정수입니다.
    N_and_scores = input().split(' ')

    # N과 학생들의 점수를 분리해줍니다.
    # 둘 다 정수형으로 변환해줍니다.
    N = int(N_and_scores[0])
    scores = list(map(int, N_and_scores[1:]))

    # 수학 성적 중 최고 점수를 저장하는 변수를 선언합니다.
    max_score = max(scores)
    # 수학 성적 중 최소 점수를 저장하는 변수를 선언합니다.
    min_score = min(scores)

    # 점수를 내림차순으로 정렬해줍니다.
    scores.sort(reverse=True)

    # 각 점수에서 인접한 점수와의 차이들을 저장하는 리스트 변수를 선언합니다.
    gaps = []

    # 점수에서 뒤에서 하나 뺀 것까지 반복합니다.
    for score_index in range(N - 1):
        # 점수 리스트 변수에서 현재 점수와 그 뒤의 인덱스에 있는 점수와의 차이를 저장하는 변수를 선언합니다.
        gap = scores[score_index] - scores[score_index + 1]

        # gaps에 위에서 구한 차이점을 넣어줍니다.
        gaps.append(gap)

    # gaps에서 최대 차이를 저장하는 변수를 선언합니다.
    largest_gap = max(gaps)

    # 출력 형식에 맞게 출력합니다.
    print(f"Class {class_index + 1}")
    print(f"Max {max_score}, Min {min_score}, Largest gap {largest_gap}")

결과

 

 

 

※ 궁금한 부분, 이상한 점 및 오타는 댓글에 부탁드립니다.

※ 더 효율적이고 빠른 정답을 환영합니다.

반응형

댓글