๋ฐ์ํ
Notice
Recent Posts
Recent Comments
Link
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Extended Slices
- BFS
- matplotlib
- PYTHON
- ์ด๊ฒ์ด ์ทจ์ ์ ์ํ ์ฝ๋ฉํ ์คํธ๋ค
- java
- 2BPerfect
- ๋ธ๋ผ์ฐ์ ์คํ
- Do_it
- ์ง ๊ฐ ์์ธก ๋ถ์
- np.zeros_like
- ์ต์
- ๋ฐฑ์ค
- ๋ฐ์ค๊ทธ๋ํ
- MacOS
- ํฉํ ๋ฆฌ์ผ ์ง๋ฒ
- ํ์ ๋ณ์
- ์ ํ ํฌ ํ์ด์ฌ
- ์๋ฐ
- ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ
- DFS
- sql
- dacon
- ์์ด
- jdbc
- mysql
- ์ฐธ์กฐ ๋ณ์
- ํ๋ก๊ทธ๋๋จธ์ค
- ์ด์ง์ ๋ณํ
- Do it
Archives
- Today
- Total
๐ฆ ๊ณต๋ฃก์ด ๋์!
๊น์ด ์ฐ์ ํ์(DFS) ๋ณธ๋ฌธ
# ex) ๋ฏธ๋ก์ฐพ๊ธฐ ํต์ฌ ์ฝ๋ ๋ฆฌ๋ทฐ
while len(stack)>0:
now = stack.pop()
if now ==dest:
return True
x= now[1] # ์ด
y= now[0] # ํ
if x - 1 > -1:
if maps[y][x-1]==0:
stack.append([x-1,y])
maps[y][x-1]=2
if x + 1 < hori: # hori = x ์ขํ ๋
if maps[y][x+1]==0:
stack.append([x+1,y])
maps[y][x+1]=2
if y - 1 > -1: # ์๋ก ์ด๋ํ ์ ์์ผ๋ฉด
if maps[y-1][x]==0:
stack.append([x,y-1])
maps[y-1][x]=2
if y + 1 < verti: # verti = y ์ขํ ๋
if maps[y+1][x]==0:
stack.append([x,y+1])
maps[y+1][x]=2
return False
- DFS ๋ค๋ฅธ ์์
# DFS ๋ฉ์๋ ์ ์
def dfs(graph,v, visited):
# ํ์ฌ ๋
ธ๋๋ฅผ ๋ฐฉ๋ฌธ ์ฒ๋ฆฌ
visited[v]=True
print(v, end='')
# ํ์ฌ ๋
ธ๋์ ์ฐ๊ฒฐ๋ ๋ค๋ฅธ ๋
ธ๋๋ฅผ ์ฌ๊ท์ ์ผ๋ก ๋ฐฉ๋ฌธ
for i in graph[v]:
if not visited[i]:
dfs(graph,i,visited)
#๊ฐ ๋
ธ๋๊ฐ ์ฐ๊ฒฐ๋ ์ ๋ณด๋ฅผ ํํ(2์ฐจ์ ๋ฆฌ์คํธ)
graph=[
[],
[2,3,8],
[1,7],
[1,4,5],
[3,5],
[3,4],
[7],
[2,6,8],
[1,7]
]
# ๊ฐ ๋
ธ๋๊ฐ ๋ฐฉ๋ฌธ๋ ์ ๋ณด๋ฅผ ํํ(1์ฐจ์ ๋ฆฌ์คํธ)
visited=[False]*9
# ์ ์๋ DFS ํจ์ ํธ์ถ
dfs(graph,1,visited)
>>> 1 2 7 6 8 3 4 5
- DFS ๋ค๋ฅธ ์์
# dfs๋ก ํน์ ๋
ธ๋๋ฅผ ๋ฐฉ๋ฌธํ๊ณ ์ฐ๊ฒฐ๋ ๋ชจ๋ ๋
ธ๋๋ค๋ ๋ฐฉ๋ฌธ
def dfs(x,y):
# ์ฃผ์ด์ง ๋ฒ์๋ฅผ ๋ฒ์ด๋๋ ๊ฒฝ์ฐ์๋ ์ฆ์ ์ข
๋ฃ
if x<= -1 or x>=n or y<=-1 or y>=m:
return False
# ํ์ฌ ๋
ธ๋๋ฅผ ์์ง ๋ฐฉ๋ฌธํ์ง ์์๋ค๋ฉด
if graph[x][y] ==0:
# ํด๋น ๋
ธ๋ ๋ฐฉ๋ฌธ ์ฒ๋ฆฌ
graph[x][y]=1
# ์, ํ, ์ข, ์ฐ์ ์์น๋ค๋ ๋ชจ๋ ์ฌ๊ท์ ์ผ๋ก ํธ์ถ
dfs(x-1,y)
dfs(x,y-1)
dfs(x+1,y)
dfs(x,y+1)
return True
return False
# N, M์ ๊ณต๋ฐฑ์ ๊ธฐ์ค์ผ๋ก ๊ตฌ๋ถํ์ฌ ์
๋ ฅ ๋ฐ๊ธฐ ์ธ๋ก ๊ธธ์ด N ๊ฐ๋ก ๊ธธ์ด M
n,m = map(int, input().split())
# 2์ฐจ์ ๋ฆฌ์คํธ์ ๋งต ์ ๋ณด ์
๋ ฅ ๋ฐ๊ธฐ
graph=[]
for i in range(n):
graph.append(list(map(int, input())))
# ๋ชจ๋ ๋
ธ๋(์์น)์ ๋ํ์ฌ ์๋ฃ์ ์ฑ์ฐ๊ธฐ
result =0
for i in range(n):
for j in range(m):
# ํ์ฌ ์์น์์ DFS ์ํ
if dfs(i,j)==True:
result+=1
print(result) # ์ ๋ต ์ถ๋ ฅ
- ์คํ / ํ ์์ ์ฝ๋
class Stack(list):
push = list.append
def peek(self):
return self[-1]##==self[(len(self)-1]
class Queue(list):
put = list.append
def peek(self):
return self[0]
def get(self):
return self.pop(0)
from collections import deque
queue = deque()
queue.append(3)
queue.append(2)
queue.popleft()
queue.append(2)
queue.append(4)
queue.popleft()
print(queue)
#์คํ๊ฒฐ๊ณผ
>>> deque([2,4])
queue.reverse() # ์ญ์์ผ๋ก ๋ฐ๊พธ๊ธฐ
print(queue)
#์คํ๊ฒฐ๊ณผ
>>> deque([4,2])
- list๋ฅผ ํ์ฉํ queue๋ฅผ ์ฌ์ฉํ๋ค๊ณ ํ๋ฉด ์๊ฐ๋ณต์ก๋๊ฐ deque๋ณด๋ค ๋๋ค python์์๋ ์๊ฐ ๋ณต์ก๋๋ฅผ ์ค์ด๊ธฐ ์ํด์๋ deque๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
๋ฐ์ํ
'Development > CodingTest' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ ํด๋ฆฌ๋ ํธ์ ๋ฒ (0) | 2021.12.28 |
---|---|
๋๋น ์ฐ์ ํ์(BFS) (2) | 2021.12.28 |
[ํ๋ก๊ทธ๋๋จธ์ค] Java ์์์ฐพ๊ธฐ (0) | 2021.12.25 |
[์์ด] Visited๋ฅผ ์ด์ฉํ ์์ด (0) | 2021.12.24 |
[์์ด] Swap์ ์ด์ฉํ ์์ด (0) | 2021.12.23 |
Comments