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
- 투포인터
- 그래프 탐색
- 재귀
- 분할정복
- 우선순위큐
- 구현
- 브루트포스
- 서브쿼리
- 트리
- join
- 해시
- 다시
- GROUP BY
- 자료구조
- 다익스트라
- 백트래킹
- BFS
- 다이나믹프로그래밍
- MST
- 시뮬레이션
- DP
- 다이나믹 프로그래밍
- DFS
- 그리디
- 에라토스테네스의 체
- 그래프 이론
- 수학
- 크루스칼
- 누적합
- 플로이드-워셜
Archives
- Today
- Total
기록하고 까먹지 말기
15650 본문
날짜 : 2022. 10. 09
사용 언어 : python
문제
코드
import sys
def dfs():
if len(s) >= 2 and s[-1] < s[-2]:
return
if len(s) == m: # 스택에 m개의 요소가 쌓이면 출력 후 리턴
print(' '.join(map(str, 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
return
n, m = map(int, sys.stdin.readline().split()) # n : 노드 개수, m : 깊이
s = [] # 출력할 스택
visited = [False] * (n+1) # 방문여부 표시
dfs()
# 출력할 스택과 방문여부 체크용 리스트 생성
# 재귀적으로 실행하면서 출력스택 용량이 다 차면 출력 후 해당 함수를 빠져나오면서 False로 다시 반환
알게된 점
- 백트래킹을 활용한 기본문제였다
- 백트래킹 과정에서 스택이 오름차순이 되지 않는 경우 곧바로 재귀함수를 탈출하는 조건문을 넣어 문제를 풀이했다.
참고 사이트
- https://zidarn87.tistory.com/331
파이썬 / BOJ 백준 / 15650번 N과 M(2) - 백트래킹
파이썬 / BOJ 백준 / 15650번 N과 M(2) - 백트래킹 https://www.acmicpc.net/problem/15650 15650번: N과 M (2) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력..
zidarn87.tistory.com
'전공 > 백준' 카테고리의 다른 글
15651 (0) | 2022.10.10 |
---|---|
15649 (0) | 2022.10.10 |
BFS 응용문제(이코테) (0) | 2022.10.08 |
DFS 응용문제(이코테) (0) | 2022.10.08 |
2004 (0) | 2022.10.06 |