๐Ÿ˜Ž ๊ณต๋ถ€ํ•˜๋Š” ์ง•์ง•์•ŒํŒŒ์นด๋Š” ์ฒ˜์Œ์ด์ง€?

[BAEKJOON python] 9205_๋งฅ์ฃผ ๋งˆ์‹œ๋ฉด์„œ ๊ฑธ์–ด๊ฐ€๊ธฐ ๋ณธ๋ฌธ

๐Ÿฆฅ ์ฝ”ํ…Œ/BAEKJOON

[BAEKJOON python] 9205_๋งฅ์ฃผ ๋งˆ์‹œ๋ฉด์„œ ๊ฑธ์–ด๊ฐ€๊ธฐ

์ง•์ง•์•ŒํŒŒ์นด 2022. 10. 8. 21:28
728x90
๋ฐ˜์‘ํ˜•
์†ก๋„์— ์‚ฌ๋Š” ์ƒ๊ทผ์ด์™€ ์นœ๊ตฌ๋“ค์€ ์†ก๋„์—์„œ ์—ด๋ฆฌ๋Š” ํŽœํƒ€ํฌํŠธ ๋ฝ ํŽ˜์Šคํ‹ฐ๋ฒŒ์— ๊ฐ€๋ ค๊ณ  ํ•œ๋‹ค.
์˜ฌํ•ด๋Š” ๋งฅ์ฃผ๋ฅผ ๋งˆ์‹œ๋ฉด์„œ ๊ฑธ์–ด๊ฐ€๊ธฐ๋กœ ํ–ˆ๋‹ค.
์ถœ๋ฐœ์€ ์ƒ๊ทผ์ด๋„ค ์ง‘์—์„œ ํ•˜๊ณ , ๋งฅ์ฃผ ํ•œ ๋ฐ•์Šค๋ฅผ ๋“ค๊ณ  ์ถœ๋ฐœํ•œ๋‹ค.
๋งฅ์ฃผ ํ•œ ๋ฐ•์Šค์—๋Š” ๋งฅ์ฃผ๊ฐ€ 20๊ฐœ ๋“ค์–ด์žˆ๋‹ค.
๋ชฉ์ด ๋งˆ๋ฅด๋ฉด ์•ˆ๋˜๊ธฐ ๋•Œ๋ฌธ์— 50๋ฏธํ„ฐ์— ํ•œ ๋ณ‘์”ฉ ๋งˆ์‹œ๋ ค๊ณ  ํ•œ๋‹ค.
์ฆ‰, 50๋ฏธํ„ฐ๋ฅผ ๊ฐ€๋ ค๋ฉด ๊ทธ ์ง์ „์— ๋งฅ์ฃผ ํ•œ ๋ณ‘์„ ๋งˆ์…”์•ผ ํ•œ๋‹ค.
๋งฅ์ฃผ๋ฅผ ๋” ๊ตฌ๋งคํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.
ํŽธ์˜์ ์— ๋“ค๋ ธ์„ ๋•Œ, ๋นˆ ๋ณ‘์€ ๋ฒ„๋ฆฌ๊ณ  ์ƒˆ ๋งฅ์ฃผ ๋ณ‘์„ ์‚ด ์ˆ˜ ์žˆ๋‹ค.
๋ฐ•์Šค์— ๋“ค์–ด์žˆ๋Š” ๋งฅ์ฃผ๋Š” 20๋ณ‘์„ ๋„˜์„ ์ˆ˜ ์—†๋‹ค.
ํŽธ์˜์ ์„ ๋‚˜์„  ์งํ›„์—๋„ 50๋ฏธํ„ฐ๋ฅผ ๊ฐ€๊ธฐ ์ „์— ๋งฅ์ฃผ ํ•œ ๋ณ‘์„ ๋งˆ์…”์•ผ ํ•œ๋‹ค.
ํŽธ์˜์ , ์ƒ๊ทผ์ด๋„ค ์ง‘, ํŽœํƒ€ํฌํŠธ ๋ฝ ํŽ˜์Šคํ‹ฐ๋ฒŒ์˜ ์ขŒํ‘œ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.
์ƒ๊ทผ์ด์™€ ์นœ๊ตฌ๋“ค์ด ํ–‰๋ณตํ•˜๊ฒŒ ํŽ˜์Šคํ‹ฐ๋ฒŒ์— ๋„์ฐฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑ

์ฒซ์งธ ์ค„์— ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ๊ฐœ์ˆ˜ t๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (t ≤ 50)
๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ์ฒซ์งธ ์ค„์—๋Š” ๋งฅ์ฃผ๋ฅผ ํŒŒ๋Š” ํŽธ์˜์ ์˜ ๊ฐœ์ˆ˜ n์ด ์ฃผ์–ด์ง„๋‹ค. (0 ≤ n ≤ 100).

๋‹ค์Œ n+2๊ฐœ ์ค„์—๋Š” ์ƒ๊ทผ์ด๋„ค ์ง‘, ํŽธ์˜์ , ํŽœํƒ€ํฌํŠธ ๋ฝ ํŽ˜์Šคํ‹ฐ๋ฒŒ ์ขŒํ‘œ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.
๊ฐ ์ขŒํ‘œ๋Š” ๋‘ ์ •์ˆ˜ x์™€ y๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. (๋‘ ๊ฐ’ ๋ชจ๋‘ ๋ฏธํ„ฐ, -32768 ≤ x, y ≤ 32767)

์†ก๋„๋Š” ์ง์‚ฌ๊ฐํ˜• ๋ชจ์–‘์œผ๋กœ ์ƒ๊ธด ๋„์‹œ์ด๋‹ค.
๋‘ ์ขŒํ‘œ ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ๋Š” x ์ขŒํ‘œ์˜ ์ฐจ์ด + y ์ขŒํ‘œ์˜ ์ฐจ์ด ์ด๋‹ค. (๋งจํ•ดํŠผ ๊ฑฐ๋ฆฌ)

๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์— ๋Œ€ํ•ด์„œ ์ƒ๊ทผ์ด์™€ ์นœ๊ตฌ๋“ค์ด ํ–‰๋ณตํ•˜๊ฒŒ ํŽ˜์Šคํ‹ฐ๋ฒŒ์— ๊ฐˆ ์ˆ˜ ์žˆ์œผ๋ฉด "happy",
์ค‘๊ฐ„์— ๋งฅ์ฃผ๊ฐ€ ๋ฐ”๋‹ฅ๋‚˜์„œ ๋” ์ด๋™ํ•  ์ˆ˜ ์—†์œผ๋ฉด "sad"๋ฅผ ์ถœ๋ ฅ
# 1) BFS
from collections import deque

def bfs(x, y) :
    queue = deque()
    queue.append((x, y))

    visited = [(x, y)]

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

        if x == rock_x and y == rock_y :
            print("happy")
            return
        
        for nx, ny in graph :
            if (nx, ny) not in visited :
                if abs(nx - x) + abs(ny - y) <= beer * 50 :
                    queue.append((nx, ny))
                    visited.append((nx, ny))
    print("sad")
    return


visited = []
# ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ๊ฐœ์ˆ˜
t = int(input())

for i in range(t) :
    # ๋งฅ์ฃผ ๊ฐœ์ˆ˜
    beer = 20

    # ํŽธ์˜์  ๊ฐœ์ˆ˜
    n = int(input())

    # ์ง‘
    home_x, home_y = map(int, input().split())
    graph = []

    # ํŽธ์˜์ 
    for j in range(n) :
        x, y = map(int, input().split())
        graph.append((x, y))

    rock_x, rock_y = map(int, input().split())
    graph.append((rock_x, rock_y))

    bfs(home_x, home_y)


# input
# 2
# 2
# 0 0
# 1000 0
# 1000 1000
# 2000 1000

# output
# happy


# input
# 2
# 0 0
# 1000 0
# 2000 1000
# 2000 2000

# output
# sad
728x90
๋ฐ˜์‘ํ˜•
Comments