๐Ÿ—๏ธ Algorithm/๐ŸŸฉ ๋ฐฑ์ค€

๐ŸŸฉ [๋ฐฑ์ค€] [Python] 9205๋ฒˆ_๋งฅ์ฃผ ๋งˆ์‹œ๋ฉด์„œ ๊ฑธ์–ด๊ฐ€๊ธฐ

Dbswnstjd 2022. 11. 26. 05:46

๋ฌธ์ œ

https://www.acmicpc.net/problem/9205

 

9205๋ฒˆ: ๋งฅ์ฃผ ๋งˆ์‹œ๋ฉด์„œ ๊ฑธ์–ด๊ฐ€๊ธฐ

์†ก๋„์— ์‚ฌ๋Š” ์ƒ๊ทผ์ด์™€ ์นœ๊ตฌ๋“ค์€ ์†ก๋„์—์„œ ์—ด๋ฆฌ๋Š” ํŽœํƒ€ํฌํŠธ ๋ฝ ํŽ˜์Šคํ‹ฐ๋ฒŒ์— ๊ฐ€๋ ค๊ณ  ํ•œ๋‹ค. ์˜ฌํ•ด๋Š” ๋งฅ์ฃผ๋ฅผ ๋งˆ์‹œ๋ฉด์„œ ๊ฑธ์–ด๊ฐ€๊ธฐ๋กœ ํ–ˆ๋‹ค. ์ถœ๋ฐœ์€ ์ƒ๊ทผ์ด๋„ค ์ง‘์—์„œ ํ•˜๊ณ , ๋งฅ์ฃผ ํ•œ ๋ฐ•์Šค๋ฅผ ๋“ค๊ณ  ์ถœ๋ฐœํ•œ๋‹ค.

www.acmicpc.net

ํ’€์ด

# ๋ฐฑ์ค€ 9205๋ฒˆ ๋ฌธ์ œ - ๋งฅ์ฃผ ๋งˆ์‹œ๋ฉด์„œ ๊ฑธ์–ด๊ฐ€๊ธฐ
import sys
from collections import deque
input = sys.stdin.readline

def bfs():
    q = deque()
    q.append([home[0], home[1]])
    while q:
        x, y = q.popleft()
        if abs(x-festival[0]) + abs(y-festival[1]) <= 1000: # ๊ฑฐ๋ฆฌ๊ฐ€ 1000์ด๋‚ด์ผ ๊ฒฝ์šฐ
            print('happy')
            return
        for i in range(n):
            if not visited[i]:
                new_x, new_y = conv[i]
                if abs(x-new_x) + abs(y-new_y) <= 1000:
                    q.append([new_x, new_y])
                    visited[i] = 1
    print('sad')
    return 
t = int(input())
for _ in range(t):
    n = int(input())
    home = [int(x) for x in input().split()]
    conv = []
    for _ in range(n):
        conv.append(list(map(int, input().split())))
    festival = [int(x) for x in input().split()]
    visited = [0 for i in range(n+1)]
    bfs()

dxdy ํ’€์ด๋กœ๋งŒ ํ’€๋‹ค๊ฐ€ ์ƒ๊ฐ์„ ๋ฐ”๊ฟ”์„œ ํ•ด๋ณด๋„๋ก ๋…ธ๋ ฅํ•ด์•ผ๊ฒ ๋‹ค.