주어진 정수가 4개 뿐이기 때문에 모든 가능한 조합을 따져봐도 문제를 해결할 수 있겠지만, 최장 맨해튼 거리는 서로 가장 멀리 떨어진 두 좌표에서 찾아지는 값이기 때문에 가장 작은 값을 가지는 좌표와 가장 큰 값을 가지는 좌표를 바로 구해서 문제를 해결해 주었다.
가령, 주어진 예시 -1 -3 5 -10 에서
오름차순으로 정렬해 준 뒤 (-10 -3 -1 5)
가장 작은 값을 가지는 좌표 a = (-10, -3)
가장 큰 값을 가지는 좌표 b = (-1, 5)
두 좌표 a, b를 구하여 최장 맨해튼 거리를 구해 주면 쉽게 해결할 수 있다.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
int x1, y1, x2, y2;
vector<int> input(4);
for (int i = 0; i < 4; i++) cin >> input[i];
sort(input.begin(), input.end());
x1 = input[0], y1 = input[1];
x2 = input[2], y2 = input[3];
cout << abs(x1 - x2) + abs(y1 - y2);
return 0;
}
'Alrogithm > 구름(GOORM)' 카테고리의 다른 글
[구름 알고리즘 먼데이 챌린지] Week2 : 1. 합격자 찾기 (0) | 2022.11.04 |
---|---|
[구름 알고리즘 먼데이 챌린지] Week1 : 4. 소수 찾기 (0) | 2022.11.04 |
[구름 알고리즘 먼데이 챌린지] Week1 : 2. 동명이인 (0) | 2022.11.04 |
[구름 알고리즘 먼데이 챌린지] Week1 : 1. 경로의 개수 (0) | 2022.11.04 |
[구름 알고리즘 먼데이 챌린지] Week0 : 2. 카드 교환하기 (2) | 2022.11.03 |