문제 설명
https://www.acmicpc.net/problem/2564
문제 풀이
처음에는 2차원 배열로 풀라고 했는데...
배열 인덱스들이 너무 헷갈려서 끙끙대고 있을 때 같이 푸는 친구에게 아이디어를 듣고 풀어보았다
2차원 배열로 생각하지 말고, 사각형을 일자로 쭉- 펴서 풀어보라는 것
그렇게 1차원 배열로 생각해서 풀었더니 쉽게 풀렸다!
w, h = list(map(int, input().split()))
n = int(input())
store = [list(map(int, input().split())) for _ in range(n)]
dong = list(map(int, input().split()))
# 좌표를 입력 받아 1차원 배열(0부터의 거리)로 반환하는 함수
def cnt(a, b):
ret = 0
if a == 1: # 북
ret = b
elif a == 2: # 남
ret = w * 2 + h - b
elif a == 3: # 서
ret = (w * 2 + h * 2) - b
elif a == 4: # 동
ret = b + w
return ret
d = cnt(dong[0], dong[1])
result = 0
for i in range(n):
x, y = store[i]
s = cnt(x, y)
if s >= d: # 동근이의 위치보다 가게가 더 멀리 있을 때
result += min(s - d, d + (w + h) * 2 - s)
else: # 동근이의 위치보다 가게가 더 가까이 있을 때
result += min(d - s, (w + h) * 2 - d + s)
print(result)
'알고리즘 > 백준' 카테고리의 다른 글
[백준`S1] 1932 - 정수 삼각형 (Python) (0) | 2024.03.06 |
---|---|
[백준`G5] 14503 - 로봇 청소기 (Python) (1) | 2024.03.05 |
[백준`S2] 10971 - 외판원 순회 2 (Python) (0) | 2024.02.29 |
[백준`G5] 14891 - 톱니바퀴 (Python) (1) | 2024.02.28 |
[백준`S1] 12852 - 1로 만들기 2 (Python) (0) | 2023.11.24 |