

문제를 살펴보면 이전에 푼 문제와 유사하지만, 중복되는 것을 제외하고 사전 순으로 증가하게 출력해야한다
이전에는 재귀적으로 함수를 호출할 때마다 숫자를 처음부터 확인하였다면,
이번에는 그 숫자를 증가시켜가면서 확인을 해야한다
def generate_sequences(num, length):
result = []
def backtrack(curr_seq, start):
if len(curr_seq) == length:
result.append(curr_seq.copy())
return
for i in range(start, num+1):
if i not in curr_seq:
curr_seq.append(i)
backtrack(curr_seq, i+1)
curr_seq.pop()
backtrack([], 1)
return result
num, length = map(int, input().split())
sequences = generate_sequences(num, length)
for res in sequences:
print(*res)
이전 코드에서 backtrack의 인자로 curr_seq만 들어왔다면 이번에는 시작 기준점도 입력을 받도록 작성하였다
그렇게 하면 이전에 사용한 숫자는 다시 사용하지 않게 된다
예를 들어 설명하자면 2, 3과 같은 수열은 존재하지만, start인자로 인해
2보다 1이 더 작기 때문에 2, 1과 같은 수열은 만들어질 수 없다

오류 또는 추가적인 질문사항 있다면 댓글로 부탁드립니다!
'Baekjoon' 카테고리의 다른 글
| [Baekjoon]백준 9663 N-Queen(골드 4) - Python (1) | 2024.12.27 |
|---|---|
| [Baekjoon]백준 15651 N과 M (3)(실버 3) - Python (0) | 2024.12.25 |
| [Baekjoon]백준 15649 N과 M (1)(실버 3) - Python, C++ (0) | 2024.12.23 |
| [Baekjoon]백준 11729 하노이 탑 이동 순서(골드 5) - Python (1) | 2024.12.22 |
| [Baekjoon]백준 2447 별 찍기 - 10(골드 5) - Python (1) | 2024.12.21 |