6개의 로또 숫자를 뽑는 것이므로 조합이고, 중복되는 값이 있으면 안된다.
그래서 start로 범위를 이전보다 다음에서 시작하게 만들어 풀었다.
def lotto(idx, start):
if idx == 6:
print(" ".join(select))
return
for i in range(start, k):
select[idx] = S[i]
lotto(idx+1, i+1)
select = [0] * 6
while True:
nums = list(input().split())
k, S = int(nums[0]), nums[1:]
if k == 0:
break
lotto(0, 0)
print()
풀다보니 이제는 자동적으로 if idx == M : 이런식으로 코드를 작성하게 된다..
조합과 순열은 결국 많이 풀어봐야 익숙해지는 것 같다ㅎㅎ
'알고리즘 문제 풀기 > 백준(Baekjoon)' 카테고리의 다른 글
[백준 알고리즘 ] 7569. 토마토 (0) | 2021.03.23 |
---|---|
[백준 알고리즘] 3980. 선발명단 - 파이썬 (0) | 2021.03.23 |
[백준 알고리즘] 2309.일곱난쟁이 - 부분집합의 합(조합) (0) | 2021.03.21 |
[백준 알고리즘] 15655. N과 M (6) - 조합 (0) | 2021.03.20 |
[백준 알고리즘] 15654.N과 M (5) - 순열 (0) | 2021.03.20 |