


문제를 살펴보면 이전 문제들과 다르게 이번에는 중복된 숫자도 처리해야한다
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)
이는 이전에 풀이한 문제의 코드인데, 이 문제를 풀기 위해 if문을 삭제하고 start부분을 삭제해야한다
if문이 존재하기때문에 중복을 출력하지 않았고, start로 인해 2 3 과 같은 조합만 출력하였기 때문이다
def generate_sequences(num, length):
result = []
def backtrack(curr_seq):
if len(curr_seq) == length:
result.append(curr_seq.copy())
return
for i in range(1, num+1):
curr_seq.append(i)
backtrack(curr_seq)
curr_seq.pop()
backtrack([])
return result
num, length = map(int, input().split())
sequences = generate_sequences(num, length)
for res in sequences:
print(*res)
if문을 삭제하고 start부분을 삭제한 코드이다

단계별로 풀어보기에서 N과 M (1)부터 풀어왔다면 간단하게 해결가능한 문제이다

'Baekjoon' 카테고리의 다른 글
| [Baekjoon]백준 2580 스도쿠(골드 4) - Python (3) | 2024.12.28 |
|---|---|
| [Baekjoon]백준 9663 N-Queen(골드 4) - Python (1) | 2024.12.27 |
| [Baekjoon]백준 15650 N과 M (2)(실버 3) - Python (0) | 2024.12.24 |
| [Baekjoon]백준 15649 N과 M (1)(실버 3) - Python, C++ (0) | 2024.12.23 |
| [Baekjoon]백준 11729 하노이 탑 이동 순서(골드 5) - Python (1) | 2024.12.22 |