[백준] 15654번 N과 M (5)

거북이·2023년 1월 19일
0

백준[실버3]

목록 보기
19/92
post-thumbnail

💡문제접근

수열은 사전 순으로 증가하는 순서로 출력해야하므로 리스트를 오름차순으로 정렬한 다음 permutations을 통해 조건을 만족시키는 수열을 출력할 수 있었다.

💡코드(메모리 : 30616KB, 시간 : 152ms)

from itertools import permutations

N, M = map(int, input().split())
li = list(map(int, input().split()))
li.sort()

for i in permutations(li, M):
    print(*i)

📌백트래킹 풀이 방법(메모리 : 31256KB, 시간 : 160ms)

import sys
input = sys.stdin.readline

N, M = map(int, input().strip().split())
li = list(map(int, input().strip().split()))
li.sort()
res = []

def recursive():
    if len(res) == M:
        print(" ".join(map(str, res)))
        return 0
    else:
        for i in li:
            if i not in res:
                res.append(i)
                recursive()
                res.pop()
recursive()

💡소요시간 : 2m

0개의 댓글