백준 :: 로또 <6603번>

혜 콩·2021년 3월 11일
0

알고리즘

목록 보기
12/61

> 문제 <

독일 로또는 {1, 2, ..., 49}에서 수 6개를 고른다.
로또 번호를 선택하는데 사용되는 가장 유명한 전략은 49가지 수 중 k(k>6)개의 수를 골라 집합 S를 만든 다음
그 수만 가지고 번호를 선택하는 것이다.
예를 들어, k=8, S={1,2,3,5,8,13,21,34}인 경우 이 집합 S에서 수를 고를 수 있는 경우의 수는 총 28가지이다. ([1,2,3,5,8,13], [1,2,3,5,8,21], [1,2,3,5,8,34], [1,2,3,5,13,21], ..., [3,5,8,13,21,34])
집합 S와 k가 주어졌을 때, 수를 고르는 모든 방법을 구하는 프로그램을 작성하시오.

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

> 아이디어 <

  1. k와 s를 입력받기
  2. s 리스트 내에서 중복없이 6개 뽑아서 결과 리스트에 저장 (조합 이용)
  3. 이중 for문 사용하여 결과 리스트 출력

> 코드 <

import itertools
while True:
    datas = list(map(int,input().split()))
    if datas[0] == 0:
        break
    k=datas[0]
    s=datas[1:]   # s 리스트 생성
    result = list(itertools.combinations(s, 6))
    for i in result:
      for j in i:
        print(j, end=' ')
      print()
    print()

> 참고 <


출처 : https://dojang.io/mod/page/view.php?id=2292


출처 : https://yganalyst.github.io/etc/memo_18_itertools/

> 📃🖋 <

2차원 리스트를 보기좋게 한 리스트씩 출력하고 싶다면 반복문을 통해 출력해야한다. 처음에는 ''.join(result)를 이용했다가 런타임에러가 발생했다. join은 1차원 리스트만!

profile
배우고 싶은게 많은 개발자📚

0개의 댓글