728x90
반응형
import sys
input = sys.stdin.readline
N, M = map(int, input().split())
numList = list(map(int, input().split()))
numList.sort()
box = []
def backTracking(depth):
if depth == M:
print(' '.join(map(str, box)))
return
for i in range(N):
if not numList[i] in box:
box.append(numList[i])
backTracking(depth + 1)
box.pop()
backTracking(0)
앞선 N과 M 문제들과 유사했지만, 수열에 들어가는 숫자가 한 자리가 아니라 1234 이런 식이어서 출력에 애를 먹었다.
최대한 간결하게 출력하는 방법이 없을까 찾아보다가 visited 대신 Stack 방식으로 구현하는게 가장 간단하다고 여겨져 이렇게 구현했다.
수열이 만들어질 때마다 box 리스트에 추가하고, 재귀에서 돌아올 때마다 pop해서 Stack 형태로 사용했으며, visited를 사용하는 것과 비슷한 효과를 주었다.
728x90
반응형
'Algorithm > BackTracking' 카테고리의 다른 글
[Baekjoon 15656 / Python / 실버3] N과 M (7) (0) | 2024.08.07 |
---|---|
[Baekjoon 15655 / Python / 실버3] N과 M (6) (0) | 2024.08.07 |
[Baekjoon 15652 / Python / 실버3] N과 M (4) (0) | 2024.08.07 |
[Baekjoon 15651 / Python / 실버3] N과 M (3) (0) | 2024.08.07 |
[Baekjoon 15650 / Python / 실버3] N과 M (2) (0) | 2024.08.07 |