BFS - 맥주 마시면서 걸어가기 [ 9205번 ]
2022. 7. 22. 21:57ㆍ2022/BaekJoon_알고리즘
처음에는 BFS로 어떻게 생각하지... DFS로 어떻게 생각하지...했다.
요즘 머리가 잘 안돌아가는 것 같다 ㅠ.ㅠ
쨌든 편의점의 경우에는 순서 상관없이, 모든 편의점을 방문할 필요 없이
맥주 20개로 5M 씩 총 1000M(1KM) 를 가면서 목적지까지 가면 된다.
그렇기 때문에 bfs를 이용해서 편의점까지 가는데 1000M 이하면 방문하면 된다.
그리고 수시로 목적지까지 바로 갈 수 있는지 체크하면서 편의점 방문 여부를 확인하면 된다.
from collections import deque
def bfs(x, y):
q = deque([(x, y)])
visited = [False] * n
while q:
x, y = q.popleft()
if abs(x-ex) + abs(y-ey) <= 1000:
print("happy")
return
for i in range(n):
if not visited[i] and abs(x-convenience[i][0]) + abs(y-convenience[i][1]) <= 1000:
q.append((convenience[i][0], convenience[i][1]))
visited[i] = True
print("sad")
return
t = int(input())
result = []
for _ in range(t):
n = int(input())
tmp = []
sx, sy = map(int, input().split())
convenience = [list(map(int, input().split())) for _ in range(n)]
ex, ey = map(int, input().split())
bfs(sx, sy)
'2022 > BaekJoon_알고리즘' 카테고리의 다른 글
BFS - 토마토 [ 7569번 ] (0) | 2022.07.22 |
---|---|
BFS - 빙산 [ 2573번 ] (0) | 2022.07.20 |
BFS - 스타트링크 [5014번] (0) | 2022.07.18 |
BFS - 안전영역 (0) | 2022.07.18 |
DFS - 촌수계산 [2644번] (0) | 2022.07.17 |