반응형
[문제 출처]
https://www.acmicpc.net/problem/15649
15649번: N과 M (1)
한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해
www.acmicpc.net
[소스 코드]
dfs 알고리즘을 사용해서 모든 경우의 수열을 출력하였다.
#15649
n, m = map(int,input().split())
sq = []
def dfs():
if len(sq)==m:
print(' '.join(map(str,sq)))
return
for i in range(1,n+1):
if i not in sq:
sq.append(i)
dfs()
sq.pop()
dfs()
n = 4, m = 2일 때를 예를 들어보면, 아래와 같이 된다.
과정의 일부만 적어보았다. dfs()는 계속해서 dfs()를 호출하므로 구분을 위해서 숫자와 여러 색을 사용했다.
반응형
'알고리즘 > python' 카테고리의 다른 글
[python/파이썬] 백준 10828 스택 (0) | 2022.12.14 |
---|---|
[python/파이썬] 백준 15650 N과 M (2) (0) | 2022.12.01 |
[python/파이썬] 백준 2004 조합 0의 개수 (0) | 2022.11.29 |
[python/파이썬] 백준 1676 팩토리얼 0의 개수 (0) | 2022.11.28 |
[python/파이썬] 백준 11050 이항 계수1 / 11051 이항 계수 2 (0) | 2022.11.23 |