728x90
반응형
https://www.acmicpc.net/problem/15664
15664번: N과 M (10)
한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해
www.acmicpc.net
문제해결
문제 15663과 비슷한 문제
https://thought-process-ing.tistory.com/87
[python] 백준 15663 N과 M (9)
https://www.acmicpc.net/problem/15663 15663번: N과 M (9) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다.
thought-process-ing.tistory.com
바뀐 것은 출력값 각각이 오름차순 정렬로 되어있다는 것이다. 즉 [1, 7] 은 출력이 되지만 [7, 1]은 출력이 안 됨. 이 것이 15663과 다른점.
dfs를 돌릴때 출력 값을 뽑는 리스트에서 i번째 원소가 들어가면 i+1번째 원소부터 뽑을 수 있도록 dfs를 돌리면 된다.
CODE
import sys
input = sys.stdin.readline
n, m = map(int, input().split())
A = list(map(int, input().split()))
A.sort()
num = []
visited = [False]*n
def dfs(start):
if len(num) == m:
print(*num)
return
overlap = 0
for i in range(start, n):
if not visited[i] and overlap !=A[i]:
visited[i] = True
num.append(A[i])
overlap = A[i]
dfs(i+1)
visited[i] = False
num.pop()
dfs(0)
728x90
반응형
'알고리즘 > [python] 백준 BOJ' 카테고리의 다른 글
[python] 백준 15665 N과 M (11) (1) | 2023.01.06 |
---|---|
[python] 백준 9372 상근이의 여행 (1) | 2023.01.05 |
[python] 백준 15663 N과 M (9) (0) | 2023.01.04 |
[python] 백준 15657 N과 M (8) (0) | 2023.01.04 |
[python] 백준 15656 N과 M (7) (0) | 2023.01.04 |
댓글