풀이
역시나 단순 무식하게 코드를 짜보았다.
동근이가 있는 위치에 따라 각 거리를 switch와 if문을 활용하여 모두 체크해주었다.
마지막에 다 더해주면 끝!
코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int X = Integer.parseInt(st.nextToken());
int Y = Integer.parseInt(st.nextToken());
int N = Integer.parseInt(br.readLine());
int[][] sn = new int[N][2];
for (int i = 0; i < N; i++) {
st = new StringTokenizer(br.readLine());
sn[i][0] = Integer.parseInt(st.nextToken());
sn[i][1] = Integer.parseInt(st.nextToken());
}
st = new StringTokenizer(br.readLine());
int v = Integer.parseInt(st.nextToken());
int d = Integer.parseInt(st.nextToken());
int sum = 0;
for (int i = 0; i < N; i++) {
if (sn[i][0] == 1) {
switch (v) {
case 1:
sum += Math.max(d - sn[i][1], sn[i][1] - d);
break;
case 2:
sum += Y + Math.min(d + sn[i][1], X - d + X - sn[i][1]);
break;
case 3:
sum += d + sn[i][1];
break;
case 4:
sum += X - sn[i][1] + d;
break;
}
} else if (sn[i][0] == 2) {
switch (v) {
case 1:
sum += Y + Math.min(d + sn[i][1], X - d + X - sn[i][1]);
break;
case 2:
sum += Math.max(d - sn[i][1], sn[i][1] - d);
break;
case 3:
sum += Y - d + sn[i][1];
break;
case 4:
sum += X - sn[i][1] + Y - d;
break;
}
} else if (sn[i][0] == 3) {
switch (v) {
case 1:
sum += sn[i][1] + d;
break;
case 2:
sum += Y - sn[i][1] + d;
break;
case 3:
sum += Math.max(d - sn[i][1], sn[i][1] - d);
break;
case 4:
sum += X + d + sn[i][1];
break;
}
} else if (sn[i][0] == 4) {
switch (v) {
case 1:
sum += X - d + sn[i][1];
break;
case 2:
sum += X - d + Y - sn[i][1];
break;
case 3:
sum += X + d + sn[i][1];
break;
case 4:
sum += Math.max(d - sn[i][1], sn[i][1] - d);
break;
}
}
}
System.out.println(sum);
}
}
'Algo > 백준' 카테고리의 다른 글
2573: 빙산 (구현) (0) | 2021.02.19 |
---|---|
3190: 뱀 (구현) (0) | 2021.02.19 |
8911: 거북이 (구현) (0) | 2021.02.19 |
11060: 점프점프 (DP) - 실패 (0) | 2021.02.19 |
2491: 수열 (DP) (0) | 2021.02.19 |