티스토리 뷰

📚 문제

입력

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

출력

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

입력 예시

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

출력 예시

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

🧑🏻‍💻 풀이 과정

  • 입력받은 점수를 내림차순 정렬하자.
  • 내장 함수 max, min을 이용해서 점수에서 가장 큰 값과 가장 작은 값을 구하자.
  • 반복하면서 큰 점수와 작은 점수의 차이가 큰 값을 gap_val에 업데이트하자. 반복을 마치면 차이가 가장 큰 값이 gap_val에 저장되어있다.
k = int(input())

class_num = 1
for _ in range(k):
    arr = list(map(int, input().split()))
    cnt = arr[0]
    score = sorted(arr[1::], reverse=True)

    max_val = max(score)  # 큰 값
    min_val = min(score)  # 작은 값
    gap_val = score[0] - score[1]  # gap 초기화
    for i in range(2, len(score)):
        gap_val = max(gap_val, score[i - 1] - score[i])

    print('Class', class_num)
    print('Max', max_val, end=", ")
    print('Min', min_val, end=", ")
    print('Largest gap', gap_val)
    class_num += 1
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함