본문 바로가기

Algorithm/Implementation

(C++) - 백준(BOJ) 15751 : Teleportation

반응형

https://www.acmicpc.net/problem/15751

 

15751번: Teleportation

The first and only line of input contains four space-separated integers: $a$ and $b$, describing the start and end locations, followed by $x$ and $y$, describing the teleporter. All positions are integers in the range $0 \ldots 100$, and they are not neces

www.acmicpc.net

구현 문제였습니다.

📕 풀이방법

📔 입력 및 초기화

a, b좌표를 저장할 일차원 배열 ab. x, y좌표를 저장할 일차원 배열 xy. a에서 b로 그냥 갔을 때 거리 dist1, teleportation을 이용했을 때 가야하는 거리 dist2를 선언하고 ab, xy에 입력해줍니다. 이 후 통일성을 위해 ab, xy를 각각 오름차순으로 정렬합니다.

📔 풀이과정

 1. dist1은 teleportation을 이용하지 않았으므로 ab[1] - ab[0]이 이동할 거리입니다.

 2. dist2는 이용하므로 가장 가까운 좌표까지 a -> x로 이동하고 y로 순간이동한 뒤 b로 가게 됩니다.

📔 정답출력

dist1, dist2 중 작은 값을 출력합니다.


📕 Code

#include <bits/stdc++.h>
using namespace std;
int ab[2], xy[2], dist1, dist2;
int main(){
    cin >> ab[0] >> ab[1] >> xy[0] >> xy[1];
    sort(ab, ab + 2);
    sort(xy, xy + 2);
    dist1 = ab[1] - ab[0];
    dist2 = abs(ab[0] - xy[0]) + abs(ab[1] - xy[1]);
    cout << min(dist1, dist2);
}