minimimi
[CodeUp] 4891 : 행복 본문
반응형
문제출처] https://codeup.kr/problem.php?id=4891
문제요약
정수를 입력받아 최대값과 최소값의 차이를 구하시오.
풀이
배열에 데이터를 입력받은 후 배열에서 최대값과 최소값을 찾을 수도 있습니다. 하지만 저는 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;
}
반응형
'프로그래밍 공부 > 알고리즘' 카테고리의 다른 글
[백준] 1260 DFS와 BFS (0) | 2019.09.02 |
---|---|
[알고리즘] 알고리즘 공부하기 좋은 사이트 추천 (0) | 2019.08.27 |
[백준] 10845 큐 (0) | 2019.08.06 |
[백준] 10773 제로 (0) | 2019.08.06 |
[백준] 2902 KMP는 왜 KMP일까? (0) | 2019.07.31 |