[백준 5800] https://www.acmicpc.net/problem/5800
- max, min의 경우 C언어에서는 조건문을 통해 찾았지만, 정렬을 통해 구하면 쉽게 최댓값, 최솟값을 찾을 수 있다.
- 또한 Largest gap의 경우도 max함수를 사용하여 구할 것이다.
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main(void){
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int N;
cin>>N;
for(int i=0;i<N;i++){
int num;
cin>>num; // 반 성적 표본의 개수
vector<int> Score;
for(int j=0;j<num;j++){
int score;
cin>>score;
Score.push_back(score); // vector에 성적을 push
}
sort(Score.begin(),Score.end()); // 입력한 성적 오름차순 정렬
int Max=Score.back(); // 정렬한 표본에서 제일 마지막이 최댓값
int Min=Score.front(); // 정렬한 표본에서 제일 첫번째 값이 최솟값
int gap=0;
for(int j=1;j<num;j++){
gap=max(gap,Score[j]-Score[j-1]);
}
cout<<"Class "<<i+1<<'\n';
cout<<"Max "<<Max<<", Min "<<Min
<<", Largest gap "<<gap<<'\n';
}
return 0;
}
C++이 C언어보다 훨씬 간결하고 편리하게 최대&최소를 구할 수 있다.