반응형
https://www.acmicpc.net/problem/15664
15664번: N과 M (10)
한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해
www.acmicpc.net
내 코드
import sys
input = sys.stdin.readline
n, m = map(int, input().split())
num = sorted(list(map(int, input().split())))
tmp =[]
visited=[False for i in range(10000001)]
def dfs(start):
if len(tmp) == m:
print(' '.join(map(str, tmp)))
return
prev =0
for i in range(n):
if not visited[i] and prev != num[i] and start <= num[i]:
visited[i] = True
tmp.append(num[i])
prev = num[i]
dfs(num[i])
tmp.pop()
visited[i] = False
dfs(0)
dfs, 입력받은 수를 중복하지 않고, 오름차순으로 정렬하기
15663 문제에 start 변수를 추가해주었다.
그래서 start <= num[i] 을 통해 현재 수보다는 같거나 큰 수가 가능하도록 한다.
또한 prev와 visited를 통해 이전 숫자와 수가 같으면 방문했는지 검사하고, 방문 안한 상태일 때 방문하도록 한다.
반응형
'코딩테스트 대비 > 백준(BOJ)' 카테고리의 다른 글
| [Python][백준/BOJ] 15666번 : N과 M (12) (0) | 2023.06.28 |
|---|---|
| [Python][백준/BOJ] 15665번 : N과 M (11) (0) | 2023.06.28 |
| [Python][백준/BOJ] 15663번 : N과 M (9) (0) | 2023.06.26 |
| [Python][백준/BOJ] 15657번 : N과 M (8) (0) | 2023.06.26 |
| [Python][백준/BOJ] 15656번 : N과 M (7) (0) | 2023.06.26 |