[백준 문제] 15651번 N과 M(3) 재귀함수 사용 (파이썬)
- 여기서 핵심은 중복선택이 가능하다는 점이고, 이전에 코드로 넣었던 check값이 그 숫자에서 True일 경우 continue로 뛰어넘고 for문을 계속 돌렸는데, 이제 그럴 필요가 없으니까 제거해준다.
n,m = map(int,input().split())
check = [False]*(n+1)
a = [0]*m
def go(index, n, m):
if index == m:
for i in range(m):
print (a[i], end = ' ')
print()
return
for i in range(1, n+1):
## 이 부분을 없애준다. 왜? continue를 만나면 그 부분은 뛰어넘고 for문으로 돌아가는데
## 중복선택 가능하기 때문에
## if check[i] is True:
## continue
check[i] = True
a[index] = i
go(index+1, n, m)
check[i] = False
go(0,n,m)
4 2
1 1
1 2
1 3
1 4
2 1
2 2
2 3
2 4
3 1
3 2
3 3
3 4
4 1
4 2
4 3
4 4