ํฐ์คํ ๋ฆฌ ๋ทฐ
๐ฉ ๊ทธ๋ํํ์, BFS
thinking
queue์๋ค ์ฒ์ 1์ธ ์ ๋ค์ ์ขํ๋ฅผ ๋ค ๋ฃ๊ณ ์ฌ๋ฐฉํ์ํ๋ฉด์ 1๋ก ๋ฐ๊พธ๊ณ , ๋ฐ๊พผ ์ ๋ค์ ์ขํ๋ฅผ ๋ ํ์ ๋ฃ๊ณ ์ด๋ฐ์์ผ๋ก ํด๊ฒฐํ๋ค.
๊ทธ๋ฆฌ๊ณ ๊ฒฝ๋ก ๊ธธ์ด๋ฅผ ๊ตฌํด์ผํด์ ๊ธธ์ด์ฒดํฌํ visited๋ฅผ ๋ง๋ค์ด์คฌ๋ค.
โถ point 1
์ฒ์๋ถํฐ ๋ชจ๋ 1์ด๋ฉด 0์ ์ถ๋ ฅ, ์ต์ข
์ ์ผ๋ก 0์ด ๋จ์์์ผ๋ฉด -1์ ์ถ๋ ฅํด์ผ ํ๋๋ฐ ์ด๊ฑธ ์ด๋ป๊ฒ ํด์ผํ ๊น ๊ณ ๋ฏผํ๋ค
ํ์ด์ฌ์ all๊ณผ any์ ๋ํด ์๊ฒ๋๋ค. ๋๋ฐ์ฌ๊ฑด
all(), any() ํจ์๋ ํ์ด์ฌ ๋นํธ์ธ ํจ์์ด๋ฉฐ ์กฐ๊ฑด ์ฑ๋ฆฝ ์ ๋ฌด์ ๋ฐ๋ผ True / False๋ฅผ ๋ฆฌํดํด์ค๋ค.
์ธ์๋ ํ๋๋ง ์ฌ ์ ์๊ณ , ๋ฐ๋ณต๊ฐ๋ฅํ ์๋ฃํ(iterable)์ด์ด์ผํ๋ค.
ํ์ด์ฌ์์ ๋น ๊ฐ, 0, None์ False๋ก ์ธ์ํ๋ค.
All
์กฐ๊ฑด์ด ์ ๋ถ True์ด๋ฉด True๋ฅผ ๋ฆฌํด, ํ๋๋ผ๋ ํ๋ฆด ๊ฒฝ์ฐ False๋ฅผ ๋ฆฌํดํ๋ค.
(์ธ์๋ก ๋ฐ์ ์๋ฃํ์ด ๋น์ด์์ผ๋ฉด True๋ฅผ ๋ฐํํ๋ค - ex. all([ ]) : True )
Any
์กฐ๊ฑด์ค ํ๋๋ผ๋ ๋ง์ผ๋ฉด True๋ฅผ ๋ฆฌํดํ๊ณ , ๋ชจ๋ ์์๊ฐ False์ธ ๊ฒฝ์ฐ์๋ง False๋ฅผ ๋ฆฌํดํ๋ค.
(์ธ์๋ก ๋ฐ์ ์๋ฃํ์ด ๋น์ด์์ผ๋ฉด False๋ฅผ ๋ฐํํ๋ค - ex. any([ ]) : False )
#a์ 0์ด ํ๋๋ ์์ผ๋ฉด True ๋ฆฌํด
if all(0 not in array for array in a):
return True
#a์ 0์ด ํ๋๋ผ๋ ์์ผ๋ฉด True ๋ฆฌํด
if any(0 in array for array in a):
return True
โถ point 2
2์ฐจ์ ๋ฐฐ์ด์์ ์ต๋๊ฐ, ์ต์๊ฐ ๊ตฌํ๋ ๋ฒ : map
arr = [[1,2,3],[4,5,6],[7,8,9]]
# ์ต๋๊ฐ
max(map(max, arr)) # 9
# ์ต์๊ฐ
min(map(min, arr)) # 1
์ฝ๋
from collections import deque
M, N = map(int, input().split())
a = [list(map(int, input().split())) for _ in range(N)]
visited = [[0]*M for _ in range(N)]
dx = [-1, 0, 1, 0]
dy = [0, 1, 0, -1]
if all(0 not in array for array in a):
print(0)
else:
deq = deque()
for i in range(N):
for j in range(M):
if a[i][j] == 1:
deq.append((i,j))
while deq:
x, y = deq.popleft()
for d in range(4):
nx = x + dx[d]
ny = y + dy[d]
if 0<=nx<N and 0<=ny<M and a[nx][ny] == 0:
a[nx][ny] = 1
visited[nx][ny] = visited[x][y]+1
deq.append((nx,ny))
if any(0 in array for array in a):
print(-1)
else:
print(max(map(max, visited)))
'algorithm > baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 10026. ์ ๋ก์์ฝ / python ํ์ด์ฌ (0) | 2021.06.03 |
---|---|
[๋ฐฑ์ค] 1107. ๋ฆฌ๋ชจ์ปจ / python ํ์ด์ฌ (0) | 2021.06.03 |
[๋ฐฑ์ค] 14889. ์คํํธ์ ๋งํฌ / python ํ์ด์ฌ (0) | 2021.06.02 |
[๋ฐฑ์ค] 5430. AC / python ํ์ด์ฌ (0) | 2021.06.02 |
[๋ฐฑ์ค] 1931๋ฒ. ํ์์ค ๋ฐฐ์ / python ํ์ด์ฌ (0) | 2021.06.02 |
- ๊ธฐ์ง๊ตญ์ค์น
- 2579 ๊ณ๋จ์ค๋ฅด๊ธฐ
- merge์๋ฌ
- ์ผ์ฑ์ฝํ
- git ๋ฏธ๋ฌ๋ง
- BFS
- swea
- ๋ธ๋ฃจํธํฌ์ค
- 2018 ์นด์นด์ค ๊ณต์ฑ
- ๋ฐฑ์ค
- 20056 ๋ง๋ฒ์ฌ ์์ด์ ํ์ด์ด๋ณผ
- ํ์ด์ฌ
- dfs
- react
- 20057 ๋ง๋ฒ์ฌ ์์ด์ ํ ๋ค์ด๋
- ํ๋ก๊ทธ๋๋จธ์ค
- Python
- ์์ด๋๋ง์๊ธฐ
- 21609 ์์ด ์คํ๊ต
- dp
- 17406 ๋ฐฐ์ด๋๋ฆฌ๊ธฐ4
- ์๊ณ ๋ฆฌ์ฆ
- ์ผ์ฑ๊ธฐ์ถ
- merge ์๋ฌ
- ๋ณด์์ผํ
- Total
- Today
- Yesterday