반응형
문제
코드
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int n;
cin >> n;
int* x = new int[n];
int* y = new int[n];
for (int i = 0; i < n; i++)
{
cin >> x[i] >> y[i];
}
sort(x, x + n);
sort(y, y + n);
cout << (x[n-1] - x[0]) * (y[n-1] - y[0]) << endl;
delete[] x;
delete[] y;
return 0;
}
알고리즘
동적배열 사용
sort 정렬 사용
이 두개 말고는 크게 집고 갈 부분은 없습니다. 저 같은 경우는 동적 배열을 만들어주었는데요. 배열이 정해지지 않았기 때문에 그렇게 정한 것입니다.
int N,x,x1(-10001),x2(10001),y,y1(-10001),y2(10001);
물론 최대값이 추어졌기 때문에 이런 식으로 해줘도 상관은 없습니다.
동적배열에 대해서 설명하자면
int* x = new int[n];
int* y = new int[n];
정수형 포인터 'x'를 선언하고 크기가 'n'인 정수형 배열을 동적으로 할당합니다. 'new'연산자는 동적으로 메모리를 할당하고, 할당된 메모리의 시작 주소를 반환합니다. 이 시작 주소가 x에 저장되는 것입니다.
int y 또한 정수형 포인터 'y'를 선언하고 크기가 n인 정수형 배열을 동적으로 할당하는 것입니다.
이 동적배열을 해주는 이유는 크기가 가변적인 배열로 프로그램이 실행되기 전에 크기를 알 수 없을 때 사용이 되며 메모리의 효율성도 있기에 사용합니다.
이렇게 동적으로 메모리를 사용한 경우
delete[] x;
delete[] y;
꼭 delete를 해야합니다.
sort(x, x + n);
sort(y, y + n);
동적으로 생성된 x[] y[] 각각에 for문으로 넣었기 때문에 여기에서 최댓값과 최소값을 찾아줄 것입니다. 이것은 sort() 문을 통해 간단하게 x , x+n y, y+n으로 찾아주시면 됩니다.
cout << (x[n-1] - x[0]) * (y[n-1] - y[0]) << endl;
이후 cout을 통해 출력을 해주시면 됩니다. 최대 - 최소 를 x y 둘 다 해주면 값이 나옵니다.
반응형