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


문제
엄청난 양의 소 배설물을 치우는 것은 농부 존이 가장 싫어하는 농사일 중 하나입니다. 이 과정을 간소화하기 위해 그는 독창적인 발명품을 개발했습니다: 바로 배설물 순간 이동 기계입니다! 트랙터 뒤 카트를 연결해 한 지점에서 다른 지점으로 소 배설물을 끌며 운반하는 대신, 순간 이동 기계를 이용하면 배설물을 바로 한 지점에서 다른 지점으로 움직일 수 있습니다.
농부 존의 농장은 긴 직선 도로를 따라 지어졌으므로, 농장의 특정 장소는 이 도로에 따른 위치로 (수직선 위 점의 형태로 효율적으로) 묘사할 수 있습니다. 순간 이동 기계는 두 수 x, y로 묘사되는데, 이는 기계가 위치 x에 있는 배설물을 곧바로 위치 y로 옮기거나 그 반대의 동작을 할 수 있음을 의미합니다.
농부 존은 배설물을 위치 a에서 위치 b로 옮기려 하는데, 이 과정에서 도움이 될 수도 있는 순간 이동 기계를 설치했습니다. (물론, 도움이 되지 않는다면 순간 이동 기계를 사용하지 않아도 무방합니다.) 존을 도와 그가 트랙터로 배설물을 끌어야 하는 거리의 최솟값을 구합시다.
입력
유일한 줄에 공백으로 구분된 네 정수가 입력됩니다: 시작점과 끝점을 나타내는 a와 b, 이후 순간 이동 기계를 설명하는 x, y가 주어집니다. 모든 위치는 0과 100 범위 안의 정수이며, 서로 다르다는 보장은 없습니다.
출력
농부 존이 트랙터로 배설물을 끌어야 하는 최소 거리를 출력합니다.
◎알고리즘 [풀이과정]
a를 기준으로 두 텔레포트의 거리를 각각 구한다.
a -> y : 1
a -> x : 5
그런다음 텔레포트를 사용하지 않고 도착지점까지의 거리를 구한다.
a -> b : 7
그후 a에서 텔레포트까지의 거리 (x:1, y:5)를 a에서b까지의 거리(7) 와 비교하여 작을 경우를 찾는다.
(만약 큰 경우에는 텔레포트를 사용할 필요가 없기 때문이다.)
y가 기준일때는 b -> x의 거리를 구한뒤 두 합을 a에서 b까지의 거리와 비교한다.
x가 기준일때는 b -> y의 거리를 구한뒤 두 합을 a에서 b까지의 거리와 비교한다.
a에서 b까지의 거리보다 작은 경우 출력하고 그렇지 않으면 a에서 b까지의 거리를 출력한다.

import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
int x = sc.nextInt();
int y = sc.nextInt();
int line = Math.abs(a-b);
int a_lineX = a - x;
int a_lineY = a - y;
a_lineX = Math.abs(a_lineX);
a_lineY = Math.abs(a_lineY);
if(a_lineX<line) {
int b_lineY = b - y;
b_lineY = Math.abs(b_lineY);
if(line>a_lineX + b_lineY) {
line = a_lineX + b_lineY;
}
}
if(a_lineY<line) {
int b_lineX = b - x;
b_lineX = Math.abs(b_lineX);
if(line>a_lineY+b_lineX) {
line = a_lineY+b_lineX;
}
}
System.out.println(line);
}
}'알고리즘 > 랜덤 마라톤' 카테고리의 다른 글
| [백준] 2028번: 자기복제수 - JAVA[랜덤 마라톤] (0) | 2024.08.31 |
|---|---|
| [백준] 11466번: Alex Origami Squares - JAVA[랜덤 마라톤] (0) | 2024.08.30 |
| [백준] 22938번: 백발백준하는 명사수 - JAVA[랜덤 마라톤] (2) | 2024.08.28 |
| [백준] 23253번: 자료구조는 정말 최고야 - JAVA[랜덤 마라톤] (1) | 2024.08.27 |
| [백준] 2160번: 그림 비교 - JAVA[랜덤 마라톤] (0) | 2024.08.26 |