ํฐ์คํ ๋ฆฌ ๋ทฐ
728x90
๐ฉ DFS, ๋ฐฑํธ๋ํน, ์ฌ๊ทํจ์, ์คํ
thinking
for๋ฌธ์ ๋๋ฉด์ 1๋ถํฐ ๋ฆฌ์คํธ์ ๋ฃ๊ณ M๊ฐ๊ฐ ๋ค ์์ด๋ฉด ์ถ๋ ฅํ๋๋ก ์์ฑํจ.
์ด์ฐจํผ for๋ฌธ์ด ์ซ์ ์์๋๋ก ๋๊ธฐ ๋๋ฌธ์ ์์ด์ ์์๋ ๊ตณ์ด ๊ณ ๋ ค ์ํจ.
์ด๋ฏธ ๋ฐฉ๋ฌธํ์ผ๋ฉด ๊ฑด๋๋ฐ๊ณ , ๋ฐฉ๋ฌธ ์ํ์ผ๋ฉด ๋ฐฉ๋ฌธ ์ฒดํฌ ํ ํ, ์ถ๋ ฅ๋ฆฌ์คํธ์ ๋ฃ๊ณ ๋ค์ ํจ์๋ฅผ ํธ์ถ.
์ฝ๋1
๋ฐฉ๋ฌธ์ฒดํฌ๋ก ํผ ํ์ด
def DFS():
if len(s) == M:
print(*s)
return
for i in range(1, N+1):
if visited[i]: # ์ด๋ฏธ ๋ฐฉ๋ฌธํ์ผ๋ฉด ๊ฑด๋๋
continue
# ๋ฐฉ๋ฌธ ์ํ์ผ๋ฉด ๋ฐฉ๋ฌธ์ฒดํฌ ํ, ์ถ๋ ฅ ๋ฆฌ์คํธ์ ๋ฃ์
visited[i] = True
s.append(i)
DFS() # ํจ์ ๋ค์ ํธ์ถ
s.pop() # ์์๋ณต๊ท ๊ณผ์ ํ์
visited[i] = False
N, M = map(int, input().split()) # N:์ฃผ์ด์ง ์, M:์์ด์ ๊ธธ์ด
s = [] # ์ถ๋ ฅ ์์ด ๋ฃ์ ๋ฆฌ์คํธ (stack)
visited = [False] * (N+1) # ๋ฐฉ๋ฌธ์ฒดํฌ ํ ๋ฆฌ์คํธ
DFS()
์ฝ๋2
์คํ์ผ๋ก๋ง ํผ ํ์ด
def DFS():
if len(s) == M:
print(*s)
return
for i in range(1, N+1):
if i in s:
continue
s.append(i)
DFS() # ํจ์ ๋ค์ ํธ์ถ
s.pop() # ์์๋ณต๊ท
N, M = map(int, input().split())
s = [] # ์ถ๋ ฅ ์์ด ๋ฃ์ stack
DFS()
ํ์คํ๊ธฐ
DFS ์ด๊ณตํ์
'algorithm > baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 1074. Z / python ํ์ด์ฌ (0) | 2021.04.08 |
---|---|
[๋ฐฑ์ค] 2630. ์์ข ์ด ๋ง๋ค๊ธฐ / python ํ์ด์ฌ (0) | 2021.04.08 |
[๋ฐฑ์ค] 2164. ์นด๋2 / python ํ์ด์ฌ (0) | 2021.04.08 |
[๋ฐฑ์ค] 1018. ์ฒด์คํ ๋ค์ ์น ํ๊ธฐ / python ํ์ด์ฌ (0) | 2021.04.08 |
[๋ฐฑ์ค] 2798. ๋ธ๋์ญ / python ํ์ด์ฌ (0) | 2021.04.08 |
๋๊ธ
๊ธ ๋ณด๊ดํจ
TAG
- 2579 ๊ณ๋จ์ค๋ฅด๊ธฐ
- ํ๋ก๊ทธ๋๋จธ์ค
- ์์ด๋๋ง์๊ธฐ
- react
- dp
- ๋ฐฑ์ค
- ์ผ์ฑ๊ธฐ์ถ
- dfs
- 20057 ๋ง๋ฒ์ฌ ์์ด์ ํ ๋ค์ด๋
- ๋ณด์์ผํ
- 21609 ์์ด ์คํ๊ต
- ํ์ด์ฌ
- merge์๋ฌ
- swea
- 2018 ์นด์นด์ค ๊ณต์ฑ
- merge ์๋ฌ
- ์๊ณ ๋ฆฌ์ฆ
- Python
- ์ผ์ฑ์ฝํ
- BFS
- 20056 ๋ง๋ฒ์ฌ ์์ด์ ํ์ด์ด๋ณผ
- ๋ธ๋ฃจํธํฌ์ค
- ๊ธฐ์ง๊ตญ์ค์น
- git ๋ฏธ๋ฌ๋ง
- 17406 ๋ฐฐ์ด๋๋ฆฌ๊ธฐ4
์ต๊ทผ์ ์ฌ๋ผ์จ ๊ธ
- Total
- Today
- Yesterday
์ต๊ทผ์ ๋ฌ๋ฆฐ ๋๊ธ