Notice
Recent Posts
Recent Comments
Link
jyamethyst21 님의 블로그
백준 5800번- '성적 통계' (PYTHON 풀이) 본문
문제:

학교 반 수와 각 반의 학생수 및 수학 성적이 주어질 때 첫째 줄에는 몇반인지, 둘째 줄에는 가장 높은 점수, 낮은 점수, 성적을 내림차순으로 정렬했을 때 가장 큰 점수 차이를 출력하면 된다. 이때 '내림차순으로 정렬했을 때 가장 큰 점수 차이'란 예를 들어, 정렬한 수가 [78,76,30,25,23]일 경우, 78과 76의 차이는 2, 76과 30의 차이는 46, 30과 25는 5, 25와 23의 차이는 2다. 이 중 (인접한 수)가장 차이가 큰 값은 46이므로 해당 값을 출력하면 된다.
풀이:
N = int(input())
for i in range(N):
re = list(map(int,input().split()))
re.pop(0)
re = sorted(re, reverse=True)
count = []
for j in range(len(re)-1):
gap = abs(re[j]-re[j+1])
count.append(gap)
print(f'Class {i+1}')
print(f'Max {re[0]}, Min {re[-1]}, Largest gap {max(count)}')
반 수를 입력받고, 반복문을 돌면서 학생 수와 성적을 입력받는다. 그 다음 pop을 활용하여 학생 수인 첫번째 인자를 제거하고 나머지를 내림차순으로 정렬한다.
다음으로 gap을 구하기 위해 count 리스트를 초기화하고 반복문을 돌면서 인접한 수의 차이를 구해서 count에 추가한다. 인덱싱 에러가 날 수 있기 때문에 종료조건을 리스트 길이 -1로 맞추고, 차이는 절댓값으로 봐야하므로 abs 함수를 활용하였다.
그 다음 형식에 맞춰 출력하면 된다. 첫번째 줄은 몇반인지 출력하면 되고, 두번째 줄은 re 리스트를 정렬했으므로 첫번째 인덱스가 가장 큰 값, 마지막 인덱스가 가장 작은 값이므로 인덱싱을 통해서 출력한다. 그 다음 마지막인 Largest gap은 count 리스트에 차이를 전부 저장해놓은 상태이므로 가장 큰 값을 출력하면 통과된다.
'CODING 💻' 카테고리의 다른 글
| 백준 20053번- '최소, 최대 2' (PYTHON 풀이) (0) | 2026.02.03 |
|---|---|
| 백준 9085번- '더하기' (PYTHON 풀이) (0) | 2026.02.02 |
| 백준 10214번- 'Baseball' (PYTHON 풀이) (0) | 2026.01.31 |
| 백준 10797번- '10부제' (PYTHON 풀이) (0) | 2026.01.30 |
| 백준 11728번- '배열 합치기' (PYTHON 풀이) (0) | 2026.01.29 |
