나의 코드
import sys
from collections import deque
input = sys.stdin.readline
t = int(input())
def bfs():
queue = deque()
queue.append((home_x, home_y))
while queue:
x, y = queue.popleft()
if abs(x - dest_x) + abs(y - dest_y) <= 1000:
print("happy")
return
for i in range(n):
if not visited[i]:
a, b = graph[i]
if abs(x - a) + abs(y - b) <= 1000:
visited[i] = True
queue.append((a, b))
print("sad")
return
for _ in range(t):
n = int(input())
home_x, home_y = map(int, input().split())
graph = []
for _ in range(n):
x, y = map(int, input().split())
graph.append((x, y))
dest_x, dest_y = map(int, input().split())
visited = [False for _ in range(n + 1)]
bfs()
풀이 방법
처음에는 정렬 후 그리디나 구현으로 풀 수 있을거라 생각했지만
1. 좌표가 주어지는 순서대로 이동한다는 보장이 없음
2. 좌표가 음수 값을 지닐 수도 있음
해당 문제로 인해 각 지점을 그래프의 노드로 생각하여 전체탐색 후 성공.
'백준 알고리즘 (Baekjoon Algorithm)' 카테고리의 다른 글
[파이썬] 백준 알고리즘 No.2583 영역 구하기 (0) | 2023.02.09 |
---|---|
[파이썬] 백준 알고리즘 No.2573 빙산 (0) | 2023.02.09 |
[파이썬] 백준 알고리즘 No.24445 알고리즘 수업 - 너비 우선 탐색 2 (0) | 2023.02.08 |
[파이썬] 백준 알고리즘 No.24444 알고리즘 수업 - 너비 우선 탐색 1 (0) | 2023.02.08 |
[파이썬] 백준 알고리즘 No.24480 알고리즘 수업 - 깊이 우선 탐색 2 (0) | 2023.02.08 |