문제링크
https://www.acmicpc.net/problem/2564
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int width = sc.nextInt();
int height = sc.nextInt();
int store = sc.nextInt(); //상점의 개수
//1:북 2:남 3:서 4:동
int pos[][] = new int[store+1][2]; //동근이의 위치까지 저장할 배열
for(int i=0;i<=store;i++) {
pos[i][0] = sc.nextInt();
pos[i][1] = sc.nextInt();
}
int result = 0;
for(int i=0;i<store;i++) {
int dir = pos[i][0]; //위치
int len = pos[i][1]; //위치에서 얼마만큼 떨어져 있는지
switch (dir) {
case 1: //북
if(dir == pos[store][0]) result += Math.abs(pos[store][1]-len); //동근이와 위치가 같은 경우
else if(pos[store][0] == 2) {//동근이가 남쪽에 있는 경우
result += Math.min(pos[store][1]+height+len,(width-pos[store][1])+height+(width-len));
}
else if(pos[store][0] == 3) {
result += (pos[store][1] + len);
}
else {//동
result += ((width -len) + pos[store][1]);
}
break;
case 2: //남
if(dir == pos[store][0]) result += Math.abs(pos[store][1]-len); //동근이와 위치가 같은 경우
else if(pos[store][0] == 1) {//동근이가 북쪽에 있는 경우
result += Math.min(pos[store][1]+height+len,(width-pos[store][1])+height+(width-len));
}
else if(pos[store][0] == 3) { //서쪽
result += (pos[store][1] + (height - len));
}
else { //동쪽
result += ((width - len) + (height - pos[store][1]));
}
break;
case 3: //서
if(dir == pos[store][0]) result += Math.abs(pos[store][1]-len); //동근이와 위치가 같은 경우
else if(pos[store][0] == 4) { //동근이가 동쪽에 있는 경우
result += Math.min((height-pos[store][1])+width+(height-len),pos[store][1]+width+len);
}
else if(pos[store][0] == 1) {
result += (pos[store][1] + len);
}
else { //남
result += (pos[store][1] + (height - len));
}
break;
case 4: //동
if(dir == pos[store][0]) result += Math.abs(pos[store][1] - len);
else if(pos[store][0] == 3) {
result += Math.min((height-pos[store][1])+width+(height-len),pos[store][1]+width+len);
}
else if(pos[store][0] == 1) {
result += (len + (width-pos[store][1]));
}
else {
result += ((height-len) + (width - pos[store][1]));
}
break;
}
}
System.out.println(result);
}
}
'알고리즘 > 백준' 카테고리의 다른 글
[JAVA]백준_17836_ 공주님을구해라 (0) | 2021.04.14 |
---|---|
[JAVA]백준_1806_부분합 (0) | 2021.04.14 |
[JAVA]백준 _11404_플로이드 (0) | 2021.04.09 |
[JAVA]백준_2212_센서 (0) | 2021.04.07 |
[JAVA]백준_13164_행복유치원 (0) | 2021.04.07 |