백준 15654번 - N과 M (5)
백준 15654번 문제 바로가기 permutations을 이용한 풀이 ‘1부터 n까지의 숫자’ 대신에 ’n개의 숫자’가 주어진다는 점을 제외하면 N과 M (1)과 다를게 없다. ㅇ # 입력 import sys from itertools import permutations n,m = map(int, sys.stdin.readline().split()) arr = sorted(list(map(int, sys.stdin.readline().split()))) # 처리 for ans in permutations(arr, m): print(*list(ans)) backtracking을 이용한 풀이 숫자가 주어진 다는 점만 고려해주면 금세 끝낼 수 있다. # 입력 import sys n,m = map(int, sys.stdin.readline().split()) arr = sorted(list(map(int, sys.stdin.readline().split()))) ans = [] # 처리 def backtrack(): if len(ans) == m: print(*list(map(str, ans))) return for i in arr: if i not in ans: ans.append(i) backtrack() ans.pop() # return이 실행되면 여기로 돌아옴. (전 단계로 돌아감 = backtrack) backtrack()