[코딩 테스트] 직사각형 넓이 구하기
직사각형 넓이 구하기
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