[Python] BOJ 6603 - 로또(Lotto)

728x90
반응형

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

 

6603번: 로또

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

www.acmicpc.net

# 백트래킹 문제이다.

 

# k와 숫자들 num을 입력받은 뒤, BT함수로 백트래킹을 실행한다.

 

# BT함수에서 len이 6이면, 숫자6개를 모두 뽑았으므로 answer에 nums.copy()를 append해주고

   함수를 종료한다.

  

# 이미 뽑은 숫자를 또 뽑을 수 없으므로, prev변수를 통해 현재 뽑은 숫자의 다음 인덱스부터

   nums에 append되도록 했다.

 

import sys
input = sys.stdin.readline
def BT(prev, len, nums):
	if len == 6:
		answer.append(nums.copy())
		return

	for i in range(prev, k):
		nums.append(num[i])
		BT(i+1, len+1, nums)
		nums.pop()

while True:
	k, *num = map(int,input().split())
	answer = []
	if k == 0:
		break
	else:
		BT(0, 0, [])
		for i in answer:
			print(*i)
		print()

(solved.ac 티어: 실버 2)

728x90
반응형
TAGS.

Comments