티스토리 뷰

Problem

문제링크: www.acmicpc.net/problem/6603

 

6603번: 로또

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

www.acmicpc.net

알고리즘 분류:  수학, 조합론, 백트래킹, 재귀


Solution

이 문제는 하나의 집합(N) 속에서 6개의 숫자로 이루어진 모든 조합을 구하는 문제이다.

python 의 "itertools" 라이브러리에서 지원하는 *combinations 함수를 사용하면 쉽게 구할 수 있다.


Code

import itertools

while 1:
    N = list(map(int, input().split()))

    if N[0] == 0: break			# N에 0이 입력될때까지 반복
    del N[0]				# N에 처음 값(k)을 삭제

    for i in itertools.combinations(N, 6):	#combinations함수로 만들수 있는 조합을 만든 후
        print(' '.join(map(str, i)))	#문자열 형식으로 출력한다.
    print()		

 

*combinations 함수는 리스트의 조합의 결과를 반환한다.

'algorithm > 백준' 카테고리의 다른 글

[C++]백준 1187번: 최소 스패닝 트리  (0) 2021.06.06
[python]백준 2231번: 분해합  (0) 2021.05.02
[python] 백준 1002번: 터렛  (0) 2021.05.01
[python] 백준 1001번: A-B  (0) 2021.05.01
[python] 백준 1000번: A+B  (0) 2021.05.01
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함