백준 6603. 로또
집합 S와 S에 포함된 숫자의 갯수 k가 주어질 때
집합 S에 포함된 수 중에서 6개의 숫자를 고르는 모든 방법을 구하는 프로그램을 작성하시오.
주의할 사항
'출력 형식이 잘못되었습니다' 에러가 뜬 경우.
: 각 테스트 케이스 사이에 빈 줄을 하나 출력하는 걸 잊었기 때문이다.
문제 풀이
이 문제는 파이썬의 순열과 조합을 구할 수 있는 itertools 라이브러리를 이해하고 있다면 쉽게 풀 수 있다.
itertools를 활용하여 조합과 순열을 푸는 방법을 알고 싶다면 <Python으로 푸는 조합과 순열>을 참고하기를 바란다.
여기서는 combinations 메소드를 활용하여 경우의 수를 모두 구해 문제를 해결한다.
이미 주어진 입력에서 S의 원소들이 오름차순으로 주어져 있으므로,
파이썬이 list원소들의 기존 순서를 유지하려는 특성을 활용한다면 특별한 조작을 하지 않더라도 문제에서 원하는 출력 방식인
사전 순으로 결과 값을 출력할 수 있다.
파이썬 코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | import sys from itertools import combinations input = sys.stdin.readline flag = True while flag: line = list(map(int, input().strip().split())) n = int(line[0]) if n == 0: flag = False break for case in combinations(line[1:], 6): print(' '.join(map(str, case))) print('') | cs |
#파이썬 백준 6603 로또 #python 6603 로또
'온라인 코딩 테스트 문제 풀이 > 백준 문제 풀이' 카테고리의 다른 글
python으로 푸는 백준 15686. 치킨 배달 (0) | 2019.03.21 |
---|---|
Python으로 푸는 백준 10026. 적록색약 (0) | 2019.03.18 |
Python으로 푸는 백준 14888. 연산자 끼워넣기 (0) | 2019.03.16 |
Python으로 푸는 백준 16234. 인구이동 (0) | 2019.03.15 |