BOJ

백준 6603. 로또 [Python]

Hoo_Dev 2022. 6. 14. 00:27
 

6603번: 로또

입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있다. 첫 번째 수는 k (6 < k < 13)이고, 다음 k개 수는 집합 S에 포함되는 수이다. S의 원소는 오름차순으로

www.acmicpc.net

def pick(numbers, n, next_i):
    global lst
    if n == 6:
        print(*lst)
        return

    for i in range(next_i, len(numbers)):
        if visited[numbers[i]] == 0:
            lst.append(numbers[i])
            visited[numbers[i]] = 1
            pick(numbers, n+1, i)
            visited[numbers[i]] = 0
            lst.pop()

visited = [0] * 50
while True:
    lotto = list(map(int, input().split()))
    if lotto[0] == 0:
        break
    lst = []
    pick(lotto, 0, 1)
    print()

오름차순으로 정렬된 순열을 뽑는 식.

로또번호는 49개 이므로 방문배열을 50까지 생성해놓은 후 풀이.

'BOJ' 카테고리의 다른 글

[백준 1260 / 파이썬 풀이] DFS와 BFS  (0) 2023.03.20
백준 10815. 숫자 카드 [Python]  (0) 2022.06.10
백준 15657. N과 M (8) [Python]  (0) 2022.06.04
백준 15656. N과 M (7) [Python]  (0) 2022.06.04
백준 15655. N과 M (6) [Python]  (0) 2022.06.04