백준 6603 로또 문제 풀이
링크 : https://www.acmicpc.net/problem/6603
이 문제는 파이썬의 조합 함수 활용해서 코딩할 수 있다.
☞ 조합의 정의와 combinations 함수 활용은 이전 글 참고
풀이
해당 문제는 파이썬(python)의 조합 함수를 활용해서 코딩한다.
- 첫 번째 수 K와 K개의 수 집합 S에 포함되는 수를 입력받는다.
- 입력된 K의 수가 0 이면 빠져나간다.
- 입력된 K를 제거한다.
- 신규 리스트에 집합 S에 포함되는 수를 복사한다.
- 복사할 때 파이썬의 조합 combinations 함수를 활용하여 조합의 경우의 수만큼 리스트 담는다.
- 신규 리스트 값만큼 반복하면서 노출한다.
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
'코딩라이브러리 > 파이썬' 카테고리의 다른 글
[파이썬] 백준 23881 알고리즘 수업 선택 정렬1 (0) | 2024.06.26 |
---|---|
[파이썬] 백준 1676 팩토리얼 0의 개수 (factorial n!) (0) | 2024.06.25 |
[파이썬] 백준 2309 일곱 난쟁이 (조합 combination) (0) | 2024.06.21 |
[파이썬] 백준 13706 이분탐색이란 (0) | 2024.06.19 |
[파이썬] 백준 1929 소수 구하기, 소수 판별법 (0) | 2024.06.17 |