본문 바로가기
Algorithm

[수학/백트래킹] 백준 6603 로또 - 파이썬(Python)

by jangThang 2022. 7. 25.
반응형

백준 온라인 저지

 

[ Contents ]

     

     

    1. 문제 (링크 참조)

     

    6603번: 로또

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

    www.acmicpc.net

     

     

    2. 문제 풀이

     로또의 경우의 수를 오름차순으로 출력하는 문제입니다.

     

    2022.03.20 - [Algorithm] - [Algorithm] 백트래킹(Backtracking): 안될 싹은 미리미리 가지치기

     

    [Algorithm] 백트래킹(Backtracking): 안될 싹은 미리미리 가지치기

     DFS 탐색 중 가능성이 없는 방향은 가지 않는 '백트래킹' 기법에 대해서 알아보겠습니다. [ Contents ] 1. DFS 2022.02.23 - [Algorithm] - [Algorithm] 깊이 우선 탐색(DFS), 끝까지 찾고 넘어가자 [Algorithm]..

    star7sss.tistory.com

     DFS 탐색과 백트래킹을 이용해서 구현하는 문제입니다. 하지만, 그보다 좀 더 쉬운 방법이 있습니다. 파이썬은 itertools 라이브러리를 제공하며, combinations() 함수를 이용해서 조합을 쉽게 구할 수 있습니다.

     

     

     

    3. 코드

    from itertools import combinations
    import sys
    input = sys.stdin.readline
    
    while True:
        # 입력
        numlist = list(map(int, input().split()))
        if numlist == [0]:
            break
    
        # 조합 구하기
        lotto = combinations(numlist[1:], 6)
    
        # 출력
        for i in lotto:
            for j in i:
                print(j, end=" ")
            print()
        print()

     combinations(lst, n)는 lst에서 n개를 뽑는 조합을 반환해줍니다.

     

    star가 되고나서 Tistory

    반응형

    댓글