코딩딩/BOJ
[백준9205번 맥주 마시면서 걸어가기] 문제풀이
전낙타
2024. 8. 3. 16:22
import sys
from collections import deque
input = sys.stdin.readline
def can_reach(start, end):
return abs(start[0] - end[0]) + abs(start[1] - end[1]) <= 1000
def bfs(start, end, stores):
queue = deque([start])
visited = set([start])
while queue:
curY, curX = queue.popleft()
# 애초에 도착할 수 있다면 바로 happy
if can_reach((curY, curX), end):
return "happy"
# 아니면 편의점까지 도달할 수 있는지 체크
for store in stores:
if store not in visited and can_reach((curY, curX), store):
# 도달할 수 있다면 queue에 추가하고 다리 can_reach
visited.add(store)
queue.append(store)
return "sad"
T = int(input())
for _ in range(T):
n = int(input())
start = tuple(map(int, input().split()))
stores = [tuple(map(int, input().split())) for _ in range(n)]
end = tuple(map(int, input().split()))
print(bfs(start, end, stores))
현재 위치 -> 페스티발 or 현재 위치 -> 편의점 -> 페스티발
이런식으로 조회함