main
[백준-2564번/Java] 경비원 본문
* 좌표를 저장하기 위해 Class 를 만들어 사용했다.
import java.io.*;
import java.util.*;
public class Main {
static int width;
static int height;
static class Pair {
int x, y;
Pair(int x, int y) {
this.x = x;
this.y = y;
}
}
public static void main(String[] args) throws IOException {
Scanner scan = new Scanner(System.in);
width = scan.nextInt();
height = scan.nextInt();
int N = scan.nextInt();
Pair[] arr = new Pair[N];
for (int i = 0; i < N; i++) {
int num1 = scan.nextInt();
int num2 = scan.nextInt();
arr[i] = changeToCoodinate(num1, num2);
}
int dong_x = scan.nextInt();
int dong_y = scan.nextInt();
Pair dong_pair = changeToCoodinate(dong_x, dong_y);
int sum = 0;
for (Pair pair : arr) {
sum += findShortestPath(dong_pair.x, dong_pair.y, pair.x, pair.y);
}
System.out.println(sum);
scan.close();
}
static Pair changeToCoodinate(int x, int y) {
if (x == 1) {
x = y;
y = height;
} else if (x == 2) {
x = y;
y = 0;
} else if (x == 3) {
x = 0;
y = height - y;
} else {
x = width;
y = height - y;
}
Pair pair = new Pair(x, y);
return pair;
}
static int findShortestPath(int dong_x, int dong_y, int x, int y) {
int distance_x = 0;
int distance_y = 0;
if (dong_x == x) {
distance_y = Math.abs(dong_y - y);
} else {
distance_y = Math.min(Math.abs(dong_y + y), Math.abs(height * 2 - (dong_y + y)));
}
if (dong_y == y) {
distance_x = Math.abs(dong_x - x);
} else {
distance_x = Math.min(Math.abs(dong_x + x), Math.abs(width * 2 - (dong_x + x)));
}
return distance_x + distance_y;
}
}
[참고자료]
728x90
'Algorithm' 카테고리의 다른 글
[백준-4948번/Java] 베르트랑 공준 (0) | 2022.11.13 |
---|---|
[백준-2581번/Java] 소수 (0) | 2022.11.13 |
[백준-2563번/Java] 색종이 (0) | 2022.11.13 |
[백준-1004번/Java] 어린왕자 (0) | 2022.11.12 |
[백준-2775번/Java] 부녀회장이 될테야 (0) | 2022.11.12 |
Comments