minimimi

[CodeUp] 4891 : 행복 본문

프로그래밍 공부/알고리즘

[CodeUp] 4891 : 행복

99mini 2019. 8. 7. 09:07
반응형

문제출처] https://codeup.kr/problem.php?id=4891

 

행복

코이 초등학교에 새로 부임하신 교장선생님은 어린 학생들의 행복감과 학생들의 성적 차이 관계를 알아보기로 했다. 그래서 이전 성적을 조사하여 학생들의 시험 점수 차이 변화를 알아보려고 한다. 예를 들어서 $2016$년 학생 $8$명의 점수가 다음과 같다고 하자. $27, 35, 92, 75, 42, 53, 29, 87$   그러면 가장 높은 점수는 $92$점이고 가장 낮은 점수는 $27$점이므로 점수의 최대 차이는 $65$이다. 한편 $2017$년 학생 $

codeup.kr


문제요약

정수를 입력받아 최대값과 최소값의 차이를 구하시오.

풀이

배열에 데이터를 입력받은 후 배열에서 최대값과 최소값을 찾을 수도 있습니다. 하지만 저는 algorithm 라이브러리의 sort 함수를 이용하여 대열을 오름차순으로 정렬한 뒤 최대값과 최소값을 찾아보았습니다. 

STL sort()함수

sort() 함수는 C++의 algorithm 헤더에 포함되어있습니다. sort() 함수의 기본적인 사용법은 다음과 같습니다.

#include <iostream>
#include <algorithm>

using namespace std;

int main() {
	int arr[10] = {3, 4, 9, 10, 6, 1, 2, 5, 8, 7};
	sort(arr, arr + 10);

	for (int i = 0; i < 10; i++) {
		cout << arr[i] << ' ';
	}
}

sort( <정렬할 배열>, <정렬할 배열> + <정렬할 배열의 크기> ) 형태로 이용하면 됩니다. sort() 함수의 매개변수는 포인터이기 때문에 배열을 그대로 넣게 되면 시작 포인터를 가르키고, 배열 + 배열의 크기는 끝 포인터이기 때문에 위와 같이 이용하면 됩니다.

그리고 sort() 함수는 기본적으로 오름차순으로 정렬하게 됩니다. 정렬을 내림차순으로 하고 싶으면 compare() 함수를 만들어 sort 함수의 세 번째 매개변수에 넣어주면 됩니다.

#include <iostream>
#include <algorithm>

using namespace std;

bool compare(int a, int b) {
	return a > b;
}

int main() {
	int arr[10] = {3, 4, 9, 10, 6, 1, 2, 5, 8, 7};
	sort(arr, arr + 10, compare);

	for (int i = 0; i < 10; i++) {
		cout << arr[i] << ' ';
	}
}

compare 함수는 왼쪽에 있는 값(a)이 더 클 수 있도록 정렬하라는 뜻입니다. 따라서 내림차순으로 정렬하게 됩니다.


소스코드는 C/C++로 작성하였습니다.

#include <iostream>
#include <algorithm>

using namespace std;

int arr[1001];

int main() {
	int num;
	cin >> num;

	for (int i = 0; i < num; i++) {
		int x;
		cin >> x;
		arr[i] = x;
	}

	sort(arr, arr + num);

	int result = arr[num - 1] - arr[0];
	cout << result;
}

 

반응형