๐ ๊ณต๋ถํ๋ ์ง์ง์ํ์นด๋ ์ฒ์์ด์ง?
[BAEKJOON python] 9205_๋งฅ์ฃผ ๋ง์๋ฉด์ ๊ฑธ์ด๊ฐ๊ธฐ ๋ณธ๋ฌธ
๐ฆฅ ์ฝํ
/BAEKJOON
[BAEKJOON python] 9205_๋งฅ์ฃผ ๋ง์๋ฉด์ ๊ฑธ์ด๊ฐ๊ธฐ
์ง์ง์ํ์นด 2022. 10. 8. 21:28728x90
๋ฐ์ํ
์ก๋์ ์ฌ๋ ์๊ทผ์ด์ ์น๊ตฌ๋ค์ ์ก๋์์ ์ด๋ฆฌ๋ ํํํฌํธ ๋ฝ ํ์คํฐ๋ฒ์ ๊ฐ๋ ค๊ณ ํ๋ค.
์ฌํด๋ ๋งฅ์ฃผ๋ฅผ ๋ง์๋ฉด์ ๊ฑธ์ด๊ฐ๊ธฐ๋ก ํ๋ค.
์ถ๋ฐ์ ์๊ทผ์ด๋ค ์ง์์ ํ๊ณ , ๋งฅ์ฃผ ํ ๋ฐ์ค๋ฅผ ๋ค๊ณ ์ถ๋ฐํ๋ค.
๋งฅ์ฃผ ํ ๋ฐ์ค์๋ ๋งฅ์ฃผ๊ฐ 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
๋ฐ์ํ
'๐ฆฅ ์ฝํ > BAEKJOON' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BAEKJOON python] 5014_์คํํธ๋งํฌ (0) | 2022.10.08 |
---|---|
[BAEKJOON python] 7569_ํ ๋งํ (0) | 2022.10.08 |
[BAEKJOON python] 2468_์์ ์์ญ (1) | 2022.10.08 |
[BAEKJOON python] 2644_์ด์๊ณ์ฐ (0) | 2022.10.08 |
[BAEKJOON python] 2667_๋จ์ง๋ฒํธ๋ถ์ด๊ธฐ (0) | 2022.10.07 |
Comments