본문 바로가기
코딩라이브러리/파이썬

[파이썬] 백준 6603 로또 (조합 combinations)

by 유니네 라이브러리 2024. 6. 24.

백준 6603 로또 문제 풀이

백준 6603 로또

링크 : https://www.acmicpc.net/problem/6603

 

이 문제는 파이썬의 조합 함수 활용해서 코딩할 수 있다.

☞ 조합의 정의와 combinations 함수 활용은 이전 글 참고

 

[파이썬] 백준 2309 일곱 난쟁이 (조합 combination)

백준 2309 일곱 난쟁이 문제 풀이https://www.acmicpc.net/problem/2309조합이란서로 다른 n개의 원소에서 (단, 0혹은 그 결과를 조합(combination)이라고 한다. ▶ 예시A, B, C 가 있을 때 2명으로 선택되는 가짓

yuneenelife.tistory.com

 

풀이

해당 문제는 파이썬(python)의 조합 함수를 활용해서 코딩한다.

  1. 첫 번째 수 K와 K개의 수 집합 S에 포함되는 수를 입력받는다.
  2. 입력된 K의 수가 0 이면 빠져나간다.
  3. 입력된 K를 제거한다.
  4. 신규 리스트에 집합 S에 포함되는 수를 복사한다.
  5. 복사할 때 파이썬의 조합 combinations 함수를 활용하여 조합의 경우의 수만큼 리스트 담는다.
  6. 신규 리스트 값만큼 반복하면서 노출한다.
import sys
from itertools import combinations
rtn = []
while True:
    #1.첫번째 수 K 와 K개의 수 집합 S에 포함되는 수를 입력받는다.
    inpL = list(map(int, sys.stdin.readline().rsplit()))
    #2.입력된 K 의 수가 0 이면 빠져나간다.
    if inpL[0] == 0:        
        break
    #3.입력된 K 를 제거한다.
    inpL.pop(0)
    #4.신규 리스트에 집합 S에 포함되는 수를 복사한다.
    #5.복사할 때 파이썬의 조합 combinations 함수를 활용하여 조합의 경우의 수만큼 리스트 담는다. 
    rtn += list(combinations(inpL,6)).copy()
    rtn.append("")
#6.신규 리스트만큼 반복하면서 노출한다.    
for i in range(0, len(rtn)-1):
    print(" ".join(map(str, rtn[i])))

"""
7 1 2 3 4 5 6 7
8 1 2 3 5 8 13 21 34
0
1 2 3 4 5 6
1 2 3 4 5 7
1 2 3 4 6 7
1 2 3 5 6 7
1 2 4 5 6 7
1 3 4 5 6 7
2 3 4 5 6 7

1 2 3 5 8 13
1 2 3 5 8 21
1 2 3 5 8 34
1 2 3 5 13 21
1 2 3 5 13 34
1 2 3 5 21 34
1 2 3 8 13 21
1 2 3 8 13 34
1 2 3 8 21 34
1 2 3 13 21 34
1 2 5 8 13 21
1 2 5 8 13 34
1 2 5 8 21 34
1 2 5 13 21 34
1 2 8 13 21 34
1 3 5 8 13 21
1 3 5 8 13 34
1 3 5 8 21 34
1 3 5 13 21 34
1 3 8 13 21 34
1 5 8 13 21 34
2 3 5 8 13 21
2 3 5 8 13 34
2 3 5 8 21 34
2 3 5 13 21 34
2 3 8 13 21 34
2 5 8 13 21 34
3 5 8 13 21 34
"""

 

▶ 파이썬 자습서 참고 사이트

https://docs.python.org/ko/3/library/itertools.html#itertools.combinations

 

itertools — Functions creating iterators for efficient looping

This module implements a number of iterator building blocks inspired by constructs from APL, Haskell, and SML. Each has been recast in a form suitable for Python. The module standardizes a core set...

docs.python.org