여러 정수 값을 포함하는 정수 배열이 주어진다고 가정합니다. 배열에서 가장 작은 값과 가장 큰 값의 차이를 찾아야 합니다. 이 문제를 해결하려면 매크로를 사용해야 합니다. 입력은 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