728x90
https://www.acmicpc.net/problem/15663
백트래킹 문제 3
# N & M (9)
import sys; input = sys.stdin.readline
def backtrack(lst=None):
global N, M, nums, visit, answer
if lst is None:
lst = []
if len(lst) == M:
answer.add(tuple([nums[i] for i in lst]))
return
for i in range(N):
if visit[i]: continue
visit[i] = True
lst.append(i)
backtrack(lst)
lst.pop()
visit[i] = False
def main():
global N, M, nums, visit, answer
N, M = map(int, input().split())
nums = list(map(int, input().split()))
answer = set()
visit = [False for _ in range(N)]
backtrack()
print('\n'.join(map(lambda t:' '.join(map(str, t)), sorted(answer))))
if __name__ == '__main__':
main()
뭔가 비효율적으로 짜고 있는 듯 하다
'STUDY > Algorithm' 카테고리의 다른 글
[백준]15684 사다리 조작 C++, python (0) | 2022.01.28 |
---|---|
[백준] 15666 N과 M(12) python (0) | 2022.01.27 |
[백준] 15657 N과 M(8) python (0) | 2022.01.27 |
[백준] 15654 N과 M(5) python (0) | 2022.01.27 |
[백준] 3040 백설공주와 일곱 난쟁이 python (0) | 2022.01.27 |