2020-11-17
문제
농부 존은 소 베시와 소 데이지를 키우고 있습니다.
두 소는 자유롭게 1,000 × 1,000 2차원 격자 목초지를 누비며 놀고 있습니다. 농부 존이 종을 치면 베시와 데이지가 농부 존이 있는 곳으로 달려갑니다.
베시가 B에 있을 때 1초 후에 움직일 수 있는 칸과 데이지가 D에 있을 때 1초 후에 움직일 수 있는 칸을 나타낸 그림
베시는 1초 후에 꼭짓점을 공유하는 8개의 칸 중 하나로 이동할 수 있고 데이지는 1초 후에 변을 공유하는 4개의 칸 중 하나로 이동할 수 있습니다. 칸들은 충분히 넓어서 칸 하나에도 베시와 데이지 그리고 존이 같이 서 있을 수 있습니다.
베시와 데이지 두 소 모두 최단 경로로 존에게 갈 때 어떤 소가 더 빨리 도착할까요?
입력
첫 번째 줄에 베시의 좌표 Br, Bc (1 ≤ Br, Bc ≤ 1,000) 이 주어집니다.
두 번째 줄에 데이지의 좌표 Dr, Dc (1 ≤ Dr, Dc ≤ 1,000) 이 주어집니다.
세 번째 줄에 존의 좌표 Jr, Jc (1 ≤ Jr, Jc ≤ 1,000) 이 주어집니다.
처음에 존이 있는 칸에는 베시와 데이지가 없음이 보장됩니다.
출력
첫 번째 줄에 베시가 더 빨리 도착하면 'bessie', 데이지가 더 빨리 도착하면 'daisy', 동시에 도착하면 'tie' 를 출력합니다.
import java.util.Scanner;
public class TemplateA {
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
int []bessie = new int [2];
int []daisy = new int [2];
int [] arr = new int [2];
for(int i = 0; i < 2; i++) {
bessie[i] = scan.nextInt();
}
for(int i = 0; i < 2; i++) {
daisy[i] = scan.nextInt();
}
for(int i = 0; i < 2; i++) {
arr[i] = scan.nextInt();
}
bessie[0] = Math.abs(bessie[0] - arr[0]);
bessie[1] = Math.abs(bessie[1] - arr[1]);
int bCount = bessie[0] >= bessie[1] ? bessie[0] : bessie[1];
//한턴에 모든 방향으로 이동 가능하기때문에 행이나 열중 차이가 큰게 그 턴에 최대 이동값이된다.
//때문에 행이나 열중 차이가 큰 값이 최소 이동거리가 된다.
daisy[0] = Math.abs(daisy[0] - arr[0]);
daisy[1] = Math.abs(daisy[1] - arr[1]);
int dCount = daisy[0] + daisy[1];
//한턴에 행이나 열중 하나 만 움직일 수 있으므로,
//주어진 목적지의 행열의 각 차이가 최소 이동거리가 된다.
if(bCount < dCount) {
System.out.println("bessie");
}else if(bCount > dCount) {
System.out.println("daisy");
}else {
System.out.println("tie");
};
}
}
출처링크: www.acmicpc.net/problem/16431