※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 2381번 문제인 최대 거리이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/2381
2381번: 최대 거리
첫째 줄에 N이 주어진다. 다음 N개의 줄에는 각 점의 x, y좌표가 주어진다. 각 좌표의 범위는 -1,000,000이상 1,000,000이하이다.
www.acmicpc.net
두 점 사이의 택시거리는 (1) 두 점을 각각 지나는 기울기 1의 직선 사이의 택시거리와 (2) 두 점을 각각 지나는 기울기 -1의 직선 사이의 택시거리 두 값 중 최댓값으로 표현할 수 있다.
따라서 각 직선들을 x축(또는 y축)의 교점으로 대표시키고 서로 가장 멀리 떨어진 직선 사이의 거리를 구해 문제를 해결할 수 있다.
아래는 제출한 소스코드이다.
#include <iostream>
using namespace std;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int summx = -1000000007, summn = 1000000007, diffmx = -100000007, diffmn = 1000000007;
int N; cin >> N;
while (N--) {
int x, y; cin >> x >> y;
int sm = x + y;
if (summx < sm) summx = sm;
if (summn > sm) summn = sm;
int diff = x - y;
if (diffmx < diff) diffmx = diff;
if (diffmn > diff) diffmn = diff;
}
cout << max(summx - summn, diffmx - diffmn);
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 14648 // C++] 쿼리 맛보기 (0) | 2022.08.21 |
---|---|
[BOJ 25174 // C++] 힘겨운 쿠기의 식당 개업기 (0) | 2022.08.21 |
[BOJ 14647 // C++] 준오는 조류혐오야!! (0) | 2022.08.21 |
[BOJ 25189 // C++] 시니컬한 개구리 (0) | 2022.08.20 |
[BOJ 25188 // C++] 1, 3, 모 나누기 (0) | 2022.08.19 |