반응형
문제
https://www.acmicpc.net/problem/15650
15650번: N과 M (2)
한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해
www.acmicpc.net
코드
n, m = map(int, input().split())
s = []
def dfs(start):
if len(s) == m:
print(' '.join(map(str,s)))
return
for i in range(start, n+1):
if i not in s:
s.append(i)
dfs(i+1)
s.pop()
dfs(1)
설명
https://looancheong.tistory.com/147
[파이썬, Python] 백준 15649: N과 M(1)
문제 https://www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야
looancheong.tistory.com
이 문제와 굉장히 유사한 문제였다.
하지만, 중복되는 수가 빠져야 한다.
(1, 2) = (2, 1) 이기 때문이다.
따라서, 시작 지점을 정해주고 그 수보다 큰 수를 기준으로 dfs를 돌려주었다.
dfs(1)의 경우 1이 s에 들어가고, 2,3,4가 차례대로 들어간다.
dfs(2)의 경우 2가 s에 들어가고, 3,4 가 차례대로 들어간다.
이런 식으로 중복 출력을 제외하고 출력이 가능하다.
반응형
'개발 연습장 > 백준 문제풀이' 카테고리의 다른 글
[파이썬, Python] 백준 2667: 단지번호붙이기 (0) | 2023.04.14 |
---|---|
[파이썬, Python] 백준 1012: 유기농 배추 (0) | 2023.04.13 |
[파이썬, Python] 백준 1158: 요세푸스 문제 (0) | 2023.04.11 |
[파이썬, Python] 백준 1475: 방 번호 (0) | 2023.04.10 |
[파이썬, Python] 백준 15649: N과 M (1) (0) | 2023.04.07 |