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 현재 위치 -> 편의점 -> 페스티발
이런식으로 조회함
'코딩딩 > BOJ' 카테고리의 다른 글
[백준4485번 녹색 옷 입은 애가 젤다지?] 문제풀이 (0) | 2024.08.07 |
---|---|
[백준11967번 불켜기] 문제풀이 (0) | 2024.08.06 |
[백준 14442번 벽 부수고 이동하기] 문제풀이 (0) | 2024.08.03 |
[백준 16920번 확장 게임] 문제풀이 (0) | 2024.08.01 |
[백준 1600번 말이 되고픈 원숭이] 문제풀이 (0) | 2024.07.30 |