백준 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)의 조합 함수를 활용해서 코딩한다.
- 첫 번째 수 K와 K개의 수 집합 S에 포함되는 수를 입력받는다.
- 입력된 K의 수가 0 이면 빠져나간다.
- 입력된 K를 제거한다.
- 신규 리스트에 집합 S에 포함되는 수를 복사한다.
- 복사할 때 파이썬의 조합 combinations 함수를 활용하여 조합의 경우의 수만큼 리스트 담는다.
- 신규 리스트 값만큼 반복하면서 노출한다.
"""
입력
입력은 여러 개의 테스트 케이스로 이루어져 있다.
각 테스트 케이스는 한 줄로 이루어져 있다.
첫 번째 수는 k (6 < k < 13)이고, 다음 k개 수는 집합 S에 포함되는 수이다.
S의 원소는 오름차순으로 주어진다.
입력의 마지막 줄에는 0이 하나 주어진다.
출력
각 테스트 케이스마다 수를 고르는 모든 방법을 출력한다.
이때, 사전 순으로 출력한다.
각 테스트 케이스 사이에는 빈 줄을 하나 출력한다.
"""
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
"""
▶ 파이썬 자습서 참고 사이트
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
'코딩라이브러리 > 파이썬' 카테고리의 다른 글
[파이썬] 백준 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 |