본문 바로가기

백준 문제풀이

6603번: 로또 / silver 2 / 조합

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

 

6603번: 로또

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

www.acmicpc.net

'''
6603번: 로또 / silver 2 / 조합
'''
import sys
import itertools

input = sys.stdin.readline

while True:
    lotto = list(map(int, input().split()))
    if lotto[0] == 0:
        break
    case = lotto[1:len(lotto)]
    case.sort()
    S = list(itertools.combinations(case, 6))
    for i in S:
        for j in i:
            print(j, end=' ')
        print()
    print()

 

출력하는 케이스들이 오름차순으로 정렬되어 있어야 함

 

해결 방안

1. 케이스 리스트를 오름차순으로 정렬한다.

2. itertools / combinations 조합 사용해서 S 리스트를 만든다.

 

이렇게 하면, 백트래킹을 하지 않아도 손쉽게 오름차순 리스트를 만들 수 있다.