티스토리 뷰

맥주 마시면서 걸어가기

from collections import deque
import sys

sys.stdin = open("9205_맥주마시면서걸어가기_input.txt", "r")
t = int(sys.stdin.readline())


def bfs():
    queue = deque()
    queue.append((home[0], home[1]))

    while queue:
        x, y = queue.popleft()

        if abs(x - rock_festival[0]) + abs(y - rock_festival[1]) <= 1000:
            print("happy")
            return

        for i in range(n):
            if not visit_check[i]:
                nx, ny = convenience_store[i]

                if abs(x - nx) + abs(y - ny) <= 1000:
                    queue.append((nx, ny))
                    visit_check[i] = 1

    print("sad")
    return


for _ in range(t):
    n = int(sys.stdin.readline())  # 편의점 개수
    home = list(map(int, sys.stdin.readline().split()))
    convenience_store = [tuple(map(int, sys.stdin.readline().split())) for _ in range(n)]
    rock_festival = list(map(int, sys.stdin.readline().split()))
    visit_check = [0 for _ in range(n+1)]
    bfs()

풀이

  • 집, 편의점, 락 페스티벌의 좌표를 각각 받는다.
  • 어디까지 진행했는지를 기억하기 위해 visit_check 리스트를 생성한다.
  • 거리를 구해야하기 때문에 절댓값을 사용하며, x, y 좌표에서 락 페스티벌까지의 거리를 뺀 값을 사용해주면 된다.
  • 이 값이 50m x 20m 의 거리를 초과해서는 안된다.
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함