728x90
SMALL
백준 문제 풀이: 5800 [성적 통계]
문제 링크: https://www.acmicpc.net/problem/5800
문제 설명:
여러 반의 학생들의 성적이 주어졌을 때, 각 반마다 최고 점수, 최저 점수, 그리고 점수 간격 중 가장 큰 값을 계산합니다. 이를 통해 각 반의 성적 통계를 출력합니다.
문제 해결 코드
#include <iostream>
#include <algorithm>
using namespace std;
int arr[51];
int main() {
int T;
cin >> T; // 테스트 케이스 수
int n;
int x = 1;
while (T--) {
cin >> n; // 학생 수
for (int i = 0; i < n; i++) {
cin >> arr[i]; // 성적 입력
}
sort(arr, arr + n); // 성적 정렬
int LargestGap = -1;
for (int i = 0; i < n - 1; i++) {
LargestGap = max(LargestGap, arr[i + 1] - arr[i]); // 최대 점수 차 계산
}
// 출력
cout << "Class " << x << '\n';
cout << "Max " << arr[n - 1] << ", Min " << arr[0] << ", Largest gap " << LargestGap << '\n';
x++;
}
}
코드 설명
- 핵심 알고리즘: 정렬을 사용하여 점수 간격을 계산
- 구현 세부사항:
- 각 반의 점수를 정렬하여 최저점과 최고점을 계산
- 인접 점수 간의 차이를 계산해 가장 큰 간격을 구함
- 시간 복잡도: O(T × n log n)
- n은 각 반의 학생 수
- 정렬의 시간 복잡도는 O(n log n)
결과
각 반에 대해 성적 통계를 출력합니다. 최고 점수, 최저 점수, 그리고 가장 큰 점수 간격을 확인할 수 있습니다.
다른 접근 방식이나 개선 사항이 있다면 댓글로 공유 부탁드립니다!
728x90
LIST
'BAEKJOON > 구현' 카테고리의 다른 글
백준 2966번 [찍기](C++) -yes6686- 티스토리 (0) | 2024.05.08 |
---|---|
백준 15829번 [Hashing](C++)-yes6686- 티스토리 (0) | 2024.01.05 |
백준 1966번 [프린터 큐](C++)-yes6686- 티스토리 (0) | 2024.01.02 |
백준 1074번 [Z](C++)-yes6686- 티스토리 (0) | 2023.12.23 |
백준 1259번 [팰린드롬수](C++)-yes6686- 티스토리 (0) | 2023.12.21 |