직사각형 넓이 구하기

2차원 좌표 평면에 변이 축과 평행한 직사각형이 있다.
직사각형 네 꼭짓점의 좌표 [[x1, y1], [x2, y2], [x3, y3], [x4, y4]]가 담겨있는 배열 dots가 매개변수로 주어질 때,
직사각형의 넓이를 return 하도록 solution 함수를 완성하라.


제한 사항

  • dots의 길이 = 4
  • dots의 원소의 길이 = 2
  • -256 < dots[i]의 원소 < 256
  • 잘못된 입력은 주어지지 않는다


해당 문제는 2차원 좌표평면 상에서 직사각형 각 점의 좌표를 이차원벡터 형태로 입력값을 받을 때,
넓이를 구하는 간단한 문제로, 이차원벡터가 각 점을 각기 다른 순서로 입력될 수 있다는 것을 유의하여야 한다.

풀이

#include <iostream>
#include <vector>
#include <algorithm>

int solution(vector<vector<int>> dosts){
    sort(dots.begin(), dots.end());
    return (dots[3][0] - dots[0][0]) * (dots[3][1] - dots[0][1]);
}


해설


가장 간단하게 풀 수 있는 방법으로,
이차원벡터를 algorithm STL의 sort를 이용하여 오름차순 정렬시킨 후 값을 구하는 방식이다.
간단해보이나 이차원벡터를 sort할 때, 메커니즘을 알아야 풀 수 있다.

위 방법으로 이차원벡터를 sort하면 내부 벡터의 첫 원소값 기준으로 오름차순 정렬,
이후 내부 벡터의 다음 원소값 기준으로 오름차순 정렬을 진행하기에

주어진 문제에서의 입력값인 이차원벡터의 첫 원소는 직사각형의 좌측 아래 점의 좌표,
마지막 원소는 직사각형의 우측 위 점의 좌표가 되어 대각석을 이룬다.




algorithm - sort