BOJ : 6603 로또 : Backtracking

김가영·2020년 10월 6일
0

Algorithm

목록 보기
4/78
post-thumbnail

itertools 이용

while True:
    numbers = list(map(int, list(sys.stdin.readline().split())))

    if numbers[0] == 0:
        break

    # itertools 이용
    for arr in itertools.combinations(numbers[1:],6):
        print(' '.join(map(str,arr)))
    print()

백트래킹

  • find(arr) : arr 리스트의 마지막 요소보다 큰 값을 추가하여 재귀호출. 만약 len(arr)==6이면 값을 출력한다.

  • print(' '.join(map(str,arr)))

from collections import deque
import sys
import itertools

def find(arr):
    if len(arr) == 6:
        print(' '.join(map(str,arr)))
    else:
        for n in numbers:
            if n > arr[-1]:
                find(arr +[n])

while True:
    numbers = list(map(int, list(sys.stdin.readline().split())))

    if numbers[0] == 0:
        break

    numbers = sorted(numbers[1:])

    for num in numbers:
        find([num])

    print()
profile
개발블로그

0개의 댓글