티스토리 뷰
문제 출처 : https://www.acmicpc.net/problem/2564
분류 : 구현
백준 2564 경비원
최소 거리 구하기
구현 포인트
1) 특정 점을 기준으로 위치를 다시 표현
동, 서, 남, 북에 따라 점의 위치를 따로 다루기에는 코드가 길어지고 복잡해 지므로
조금만 더 생각해 보면 왼쪽 상단을 0으로 두고, 시계방향으로 각 점들의 위치를 나타내면 간단해 진다.
코드는 아래 같다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | #include <cstdio> #include <cmath> int main() { int w, h, n, sum=0; scanf("%d %d %d", &w, &h, &n); int d, o, *a = new int[n+1]; for (int i = 0; i <= n; i++) { scanf("%d %d", &d, &o); switch (d) { case 1: a[i] = o; break; case 2: a[i] = 2 * w + h - o; break; case 3: a[i] = 2 * (w + h) - o; break; case 4: a[i] = w + o; break; } } for (int i = 0; i<n; i++) { int tmp = abs(a[i] - a[n]); sum += (tmp<(w + h))? tmp:2*(w + h)-tmp; } printf("%d\n", sum); } | cs |
'Problem & Solving > Beakjoon judge' 카테고리의 다른 글
[8983] 사냥꾼 (0) | 2018.02.20 |
---|---|
[2602] 돌다리 건너기 (0) | 2018.02.20 |
[1068] 트리 (0) | 2018.02.18 |
[2491] 수열 (0) | 2018.02.17 |
[11403] 경로찾기 (0) | 2018.02.14 |
댓글