1. 문제 상세
https://www.acmicpc.net/problem/9063
2. 문제 접근
입력받은 점의 좌표에서 가장 큰 x, y 좌표와 가장 작은 x, y 좌표를 찾는다.
큰 좌표에서 작은 좌표를 빼서 가로, 세로의 길이를 구한다.
이 값을 곱해 직사각형의 넓이를 구한다.
3. 문제 풀이
#include <iostream>
using namespace std;
int main() {
int n, pos[100000][2], x_min = 10000, y_min = 10000, x_max = -10000, y_max = -10000;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> pos[i][0] >> pos[i][1];
x_min = x_min >= pos[i][0] ? pos[i][0] : x_min;
y_min = y_min >= pos[i][1] ? pos[i][1] : y_min;
x_max = x_max <= pos[i][0] ? pos[i][0] : x_max;
y_max = y_max <= pos[i][1] ? pos[i][1] : y_max;
}
cout << (x_max - x_min) * (y_max - y_min);
}
정수형 변수 n, x_min, y_min, x_max, y_max 를 선언하고
x_min, y_min 을 10000으로, x_max, y_max 를 -10000으로 초기화한다.
크기가 10000 x 2 인 2차원 배열을 선언한다.
cin 으로 정수(좌표의 갯수)를 입력받아 n 에 저장한다.
for문으로 i 가 0부터 n 보다 작을 때 1씩 더하며 반복하도록 한다.
반복에서는 cin 으로 pos 의 i, 0 번 인덱스의 값과 i, 1 번 인덱스에 값을 입력받아 저장한다.
x_min 보다 pos 의 i, 0 번 인덱스의 값이 작은 경우 x_min 에 pos 의 i, 0 번 인덱스의 값을 저장한다.
y_min 보다 pos 의 i, 1 번 인덱스의 값이 작은 경우 y_min 에 pos 의 i, 1 번 인덱스의 값을 저장한다.
x_max 보다 pos 의 i, 0 번 인덱스의 값이 큰 경우 x_max 에 pos 의 i, 0 번 인덱스의 값을 저장한다.
y_max 보다 pos 의 i, 1 번 인덱스의 값이 큰 경우 y_max 에 pos 의 i, 1 번 인덱스의 값을 저장한다.
cout 으로 x_max 에서 x_min 을 뺀 값과, y_max 에서 y_min 을 뺀 값을 곱한 값을 출력한다.
4. 성능 확인
5. 마무리
.
'백준 - 단계별로 풀어보기 > 기하: 직사각형과 삼각형' 카테고리의 다른 글
[백준] 5073번 : 삼각형과 세 변 | C++ (0) | 2023.10.20 |
---|---|
[백준] 10101번 : 삼각형 외우기 | C++ (0) | 2023.10.20 |
[백준] 15894번 : 수학은 체육과목 입니다 | C++ (0) | 2023.10.20 |
[백준] 3009번 : 네 번째 점 | C++ (0) | 2023.10.20 |
[백준] 1085번 : 직사각형에서 탈출 | C++ (0) | 2023.10.20 |