ํฐ์คํ ๋ฆฌ ๋ทฐ
728x90
๋ฐ์ํ
๋ฌธ์
๋ฌธ์ ํ์ด
๋ฌธ์ ์ F, S, G, U, D `(๊ฑด๋ฌผ์ ๋์ด, ์์์ธต, ๊ฐ๊ณ ์ ํ๋ ์ธต, ํ ๋ฒ์ ์ฌ๋ผ๊ฐ๋ ์ธต, ํ ๋ฒ์ ๋ด๋ ค๊ฐ๋ ์ธต)`๊ฐ ์ฃผ์ด์ง๋ค. ์์ ์ธต์์ ์๋ฆฌ๋ฒ ์ดํฐ๋ฅผ ์ด์ฉํด ๊ฐ๊ณ ์ ํ๋ ์ธต์ ๋๋ฌํ๋ ์ต์ ๊ฒฝ์ฐ๋ฅผ ๋ฐํํ๋ ๋ฌธ์ ์ด๋ค. ๋ง์ฝ ๋๋ฌํ ์ ์๋ค๋ฉด ๊ณ๋จ์ ์ด์ฉํ๋ผ๋ ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํ๋ค.
- BFS๋ฅผ ํตํด ์์์ธต ๋ถํฐ ์ฌ๋ผ๊ฐ๋ ๊ฒฝ์ฐ, ๋ด๋ ค๊ฐ๋ ๊ฒฝ์ฐ๋ฅผ ํ์ํ๋ค.
- ์ฌ๋ผ๊ฐ๋ ๊ฒฝ์ฐ F๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์์ผ ํ๋ฉฐ, ๋ด๋ ค๊ฐ๋ ๊ฒฝ์ฐ๋ 0 ๋ณด๋ค ์ปค์ผ ํ๋ค.
- ์ฌ๋ฐฉ๋ฌธ์ ๋ง๊ธฐ ์ํด ํ์ฌ ๋ฐฉ๋ฌธํ ์ธต์ `visited` ๋ฆฌ์คํธ๋ฅผ ํตํด ์ฒดํฌํ๋ค.
- ์ต์๊ฐ์ ์นด์ดํธํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ 3๊ฐ์ง๊ฐ ์๋ค.
- q์ ๋ฐฉ๋ฌธํ ๋ค๋ฅธ ์ธต๊ณผ ์นด์ดํธ๋ฅผ ํจ๊ป ์ถ๊ฐํ๊ธฐ.
- `q.append((next_floor, cnt + 1))`
- visited๋ฅผ ์ด์ฉํ์ฌ ๋ฐฉ๋ฌธ ํ์๋ฅผ ๋์ ํ๊ธฐ
- `visited[next_floor] = visited[cur_floor] + 1`
- ํ์ฌ ์ถ๊ฐ๋ ํ๋ฅผ ํ๋์ ์นด์ดํธ๋ก ์ทจ๊ธํ๊ธฐ
- ํ ๋งํ ๋ฌธ์ ์ ๊ฐ์ ๋ฐฉ์.
- q์ ๋ฐฉ๋ฌธํ ๋ค๋ฅธ ์ธต๊ณผ ์นด์ดํธ๋ฅผ ํจ๊ป ์ถ๊ฐํ๊ธฐ.
์ฝ๋
from sys import stdin
from collections import deque
def bfs(start):
q = deque([start])
while q:
cur_floor, cnt = q.popleft()
if cur_floor == g:
return cnt
for next_floor in cur_floor + u, cur_floor - d:
if 0 < next_floor <= f and not visited[next_floor]:
q.append((next_floor, cnt + 1))
visited[next_floor] = True
return "use the stairs"
if __name__ == '__main__':
f, s, g, u, d = map(int, stdin.readline().split())
visited = [False] * (f + 1)
print(bfs([s, 0]))
728x90
๋ฐ์ํ
'๐จโ๐ป ์ฝ๋ฉํ ์คํธ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค: 18405 ๊ฒฝ์์ ๊ฐ์ผ (0) | 2020.10.02 |
---|---|
๋ฐฑ์ค: 2343 ๊ธฐํ ๋ ์จ (0) | 2020.10.01 |
๋ฐฑ์ค: 16195 1, 2, 3 ๋ํ๊ธฐ 9 (0) | 2020.09.30 |
๋ฐฑ์ค: 15993 1, 2, 3 ๋ํ๊ธฐ 8 (0) | 2020.09.30 |
๋ฐฑ์ค: 15992 1, 2, 3 ๋ํ๊ธฐ 7 (0) | 2020.09.29 |
๋๊ธ
๊ธ ๋ณด๊ดํจ
์ต๊ทผ์ ์ฌ๋ผ์จ ๊ธ
์ต๊ทผ์ ๋ฌ๋ฆฐ ๋๊ธ