BOJ(백준) 15651번 N과 M (3) 파이썬
2021. 3. 22. 22:51ㆍ개인 공부 공간/Algorithm
15651번: N과 M (3)
한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해
www.acmicpc.net
코드
import sys
r=sys.stdin.readline
N,M=map(int,r().split())
l=[i+1 for i in range(N)]
res=[]
def dfs(cnt):
if cnt==M:
print(*res)
return
for i in range(N):
res.append(l[i])
dfs(cnt+1)
res.pop()
dfs(0)
해설
이 문제의 해결 방식 또한 N과 M (1) 문제 풀이와 매우 유사하다. 다만 이 문제에서는 중복을 허용하여 수를 고를 수 있기 때문에 check
와 같은 방문 여부를 확인할 필요가 없다. 단순히 dfs(cnt)
를 재귀적으로 호출해주며 수열의 길이가 M
이 되는 경우에 출력하도록 하였다.
결과
'개인 공부 공간 > Algorithm' 카테고리의 다른 글
이것이 코딩 테스트다 with 파이썬 - 큰 수의 법칙 (1) | 2021.03.23 |
---|---|
BOJ(백준) 15652번 N과 M (4) 파이썬 (0) | 2021.03.22 |
BOJ(백준) 15650번 N과 M (2) 파이썬 (0) | 2021.03.22 |
BOJ(백준) 15649번 N과 M (1) 파이썬 (0) | 2021.03.22 |
BOJ(백준) 10799번 쇠막대기 파이썬 (1) | 2021.03.22 |