BOJ : 로또 [6603]

1. 문제


독일 로또는 {1, 2, ..., 49}에서 수 6개를 고른다.

로또 번호를 선택하는데 사용되는 가장 유명한 전략은 49가지 수 중 k(k>6)개의 수를 골라 집합 S를 만든 다음 그 수만 가지고 번호를 선택하는 것이다.

예를 들어, k=8, S={1,2,3,5,8,13,21,34}인 경우 이 집합 S에서 수를 고를 수 있는 경우의 수는 총 28가지이다. ([1,2,3,5,8,13], [1,2,3,5,8,21], [1,2,3,5,8,34], [1,2,3,5,13,21], ..., [3,5,8,13,21,34])

집합 S와 k가 주어졌을 때, 수를 고르는 모든 방법을 구하는 프로그램을 작성하시오.

출처 : https://www.acmicpc.net/problem/6603

2. 아이디어


  • combinations 활용

    순서대로 나오게 sort 후 combinations

3. 코드


mine

from itertools import combinations 
arr = list(map(int, input().split()))
while arr != [0]: 
    arr = sorted(arr[1:]) 
    for numbers in list(combinations(arr, 6)):
        for num in numbers:
            print(num, end=' ')
        print()
    print()
    arr = list(map(int, input().split())) 

좋은 웹페이지 즐겨찾기