Search

์กฐ์˜ˆ์ง€

2.๋ฌธ์ œ์ด๋ฆ„
3. ์ˆ˜ํ–‰์‹œ๊ฐ„[์ดˆ(s)]
2100
์ข‹์•„์š” ๋ˆ„๋ฅด๊ธฐ
์ข‹์•„์š” ์ˆ˜
: 0
5 more properties
| ์ฝ”๋“œ ์ž‘์„ฑํ•˜๊ธฐ
from collections import deque move = [[1, 0], [-1, 0], [0, 1], [0, -1]] def solution(maps): n = len(maps[0]) k = len(maps) visited = [[1]*n for _ in range(k)] queue = deque() queue.append([0, 0]) while queue: now = queue.popleft() for m in move: x = m[0]+now[0] y = m[1]+now[1] if 0 <= x < n and 0 <= y < k and visited[y][x] == 1 and maps[y][x] == 1: visited[y][x] = visited[now[1]][now[0]] + 1 queue.append([x, y]) if visited[k-1][n-1] > 1: return visited[k-1][n-1] else: return -1
Python
๋ณต์‚ฌ
| ์ฝ”๋“œ ์„ค๋ช…ํ•˜๊ธฐ
์•Œ๊ณ ๋ฆฌ์ฆ˜ ์Šคํ„ฐ๋””์—์„œ ์ตœ๋‹จ๊ฑฐ๋ฆฌ๋ฅผ bfs ํ’€๋‹ค๊ฐ€ ์‹คํŒจํ•œ ๊ฒฝํ—˜์ด ์žˆ์–ด์„œ dfs๋กœ ์‹œ๋„ํ•˜์˜€๋‹ค.
2์ฐจ์› ๋งต์„ ์›€์ง์ด๋ฏ€๋กœ ๋™์„œ๋‚จ๋ถ ๋ฐฉํ–ฅ์œผ๋กœ ๊ฐˆ ์ˆ˜ ์žˆ๋Š” move ๋ฐฐ์—ด์„ ์„ ์–ธํ•˜์˜€๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ง€๋‚˜๊ฐ„ ์ž๋ฆฌ๋Š” ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ๋„๋ก maps์™€ ๋™์ผํ•œ ํฌ๊ธฐ์˜ 2์ฐจ์› ๋ฐฐ์—ด visited๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค. ๋ชจ๋“  ์ˆ˜๋Š” 1๋กœ ์ดˆ๊ธฐํ™”ํ•˜์˜€๋‹ค.
1.
์ฒ˜์Œ์— (0, 0)์—์„œ ์‹œ์ž‘ํ•˜๋ฏ€๋กœ (0, 0)์„ ํ์— ๋„ฃ์–ด์ค€๋‹ค.
2.
๋™์„œ๋‚จ๋ถ ๋ฐฉํ–ฅ์„ ์ฒดํฌํ•˜๋ฉฐ x, y ์ขŒํ‘œ๊ฐ€ 2์ฐจ์› ๋ฐฐ์—ด ์•ˆ์— ์žˆ์œผ๋ฉฐ, ์ง€๋‚˜๊ฐ€์ง€ ์•Š์€ ์นธ (1)์ด๋ฉฐ, map์—์„œ ๋ฒฝ์ด ์•„๋‹Œ ๊ณณ์„ ํ์— ๋„ฃ๋Š”๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ง€๋‚˜๊ฐ„ ๊ฒƒ์„ ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•ด visited[y][x]์˜ ๊ฐ’์„ ์›๋ž˜ ์นธ์˜ ๊ฐ’+1๋กœ ๋ฐ”๊ฟ”์ค€๋‹ค.
3.
ํ๊ฐ€ ์—†์–ด์งˆ ๋•Œ ๊นŒ์ง€ ์ด ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•œ๋‹ค.
4.
๋งˆ์ง€๋ง‰ ์นธ (n-1, k-1)๊นŒ์ง€ ๊ฐ€๋ฉด visited[k-1][n-1]์ด 1์ด ์•„๋‹ ๊ฒƒ์ด๋ฏ€๋กœ ์ด๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ํ•˜์ง€๋งŒ ๋„๋‹ฌํ•˜์ง€ ๋ชปํ–ˆ๋‹ค๋ฉด 1์ด๋ฏ€๋กœ -1์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.