반응형
https://www.acmicpc.net/problem/5800
5800번: 성적 통계
첫째 줄에 중덕 고등학교에 있는 반의 수 K (1 ≤ K ≤ 100)가 주어진다. 다음 K개 줄에는 각 반의 학생수 N (2 ≤ N ≤ 50)과 각 학생의 수학 성적이 주어진다. 시험 성적은 0보다 크거나 같고, 100보다
www.acmicpc.net
코드
#include <iostream>
using namespace std;
void Sort(int arr[], int count);
int FindMax(int arr[], int count);
int FindMin(int arr[], int count);
int FindLargeGap(int arr[], int count);
const int COUNT = 50;
int main()
{
int k, n, input;
int arr[COUNT] = { };
cin >> k;
for (int i = 0; i < k; i++)
{
int max = -1;
int min = 101;
int largeGap = 0;
cin >> n;
for (int j = 0; j < n; j++)
{
cin >> input;
arr[j] = input;
}
Sort(arr, n);
max = FindMax(arr, n);
min = FindMin(arr, n);
largeGap = FindLargeGap(arr, n);
cout << "Class " << (i + 1) << endl;
cout << "Max " << max << ", Min " << min << ", Largest gap " << largeGap << endl;
}
return 0;
}
void Sort(int arr[], int count)
{
for (int i = 0; i < count; i++)
{
int max = -1;
int maxIndex = 0;
for (int j = i + 1; j < count; j++)
{
if (max < arr[j])
{
max = arr[j];
maxIndex = j;
}
if (j == count - 1 && arr[i] < arr[maxIndex])
{
int temp = arr[i];
arr[i] = arr[maxIndex];
arr[maxIndex] = temp;
}
}
}
}
int FindMax(int arr[], int count)
{
int max = -1;
for (int i = 0; i < count; i++)
{
if (arr[i] > max)
max = arr[i];
}
return max;
}
int FindMin(int arr[], int count)
{
int min = 101;
for (int i = 0; i < count; i++)
{
if (arr[i] < min)
min = arr[i];
}
return min;
}
int FindLargeGap(int arr[], int count)
{
int largeGap = 0;
for (int i = 1; i < count; i++)
{
int gap = arr[i - 1] - arr[i];
if (largeGap < gap)
largeGap = gap;
}
return largeGap;
}
풀이
각 반의 학생 수와 점수를 입력받아 최댓값, 최솟값 그리고 인접한 값의 차이가 가장 큰 값을 출력하는 문제이다.
먼저 입력받은 배열을 Sort 함수를 사용해 내림차순으로 정렬하였다.
내림차순으로 정렬한 뒤 FindMax, FindMin 함수를 사용해 최댓값과 최솟값을 찾는다.
인접한 두 수의 차이 중 가장 큰 값을 찾는 FindLargeGap 함수를 사용한다. 배열의 (i - 1) 인덱스와 i 인덱스를 비교해서 가장 큰 값을 찾게 하였다.
모든 값을 찾은 뒤 출력 예제에 맞게 값을 출력하였다.
반응형
'문제 해결 > BaekJoon' 카테고리의 다른 글
[백준] [C++] 5576번 콘테스트 (0) | 2023.01.13 |
---|---|
[백준] [C++] 10870번 피보나치 수 5 (0) | 2023.01.13 |
[백준] [C++] 3058번 짝수를 찾아라 (0) | 2023.01.13 |
[백준] [C++] 10809번 알파벳 찾기 (0) | 2023.01.13 |
[백준] [C++] 10773번 제로 (0) | 2023.01.12 |