본문 바로가기

Algo/백준

2564: 경비원 (구현)

풀이

역시나 단순 무식하게 코드를 짜보았다.

동근이가 있는 위치에 따라 각 거리를 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