여러 정수 값을 포함하는 정수 배열이 주어진다고 가정합니다. 배열에서 가장 작은 값과 가장 큰 값의 차이를 찾아야 합니다. 이 문제를 해결하려면 매크로를 사용해야 합니다. 입력은 stdin에서 가져오고 결과는 stdout으로 다시 인쇄됩니다.
따라서 입력이 array ={120, 589, 324, 221, 234}와 같으면 출력은 The answer is :469
가 됩니다.가장 큰 값 589와 가장 작은 값 120의 차이는 469입니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- 미니 :=무한대
- maxi :=음의 무한대
- v의 각 i에 대해 다음을 수행합니다.
- 미니> v[i]이면
- 미니 :=v[i]
- maxi
- 맥시 :=v[i]
- 미니> v[i]이면
예시
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
#define minmac(a, b) a = min(a, b)
#define maxmac(a, b) a = max(a, b)
#define INF ((1 << 31)-2)
#define input(a) cin >> a
#define toStr(a) string("The answer is :")
#define FOO(a, b)
#define foreach(a, b) for (int i = 0; i < a.size(); ++i)
#include <iostream>
#include <vector>
using namespace std;
FOO(minmac, <)
FOO(maxmac, >)
int main(){
int n; cin >> n;
vector<int> v(n);
foreach(v, i) {
input(v)[i];
}
int mini = INF;
int maxi = -INF;
foreach(v, i) {
minmac(mini, v[i]);
maxmac(maxi, v[i]);
}
int ans = maxi - mini;
cout << toStr(The answer is :) <<' '<< ans;
return 0;
} 입력
5 120 589 324 221 234
출력
The answer is : 469