파이썬알고리즘

백준 6603 파이썬

zho 2023. 2. 6. 21:44

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

 

6603번: 로또

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

www.acmicpc.net

def dfs(start, depth):
    if depth == 6:
        for i in range(6):
            print(answer[i], end=' ')
        print()
        return
    for i in range(start, len(S)):
        answer[depth] = S[i]
        dfs(i + 1, depth + 1)
answer = [0 for i in range(13)]
while 1:
    S = list(map(int, input().split()))
    K = S[0]
    if K == 0:
        break
    del S[0]
    dfs(0, 0)
    print()

DFS(깊이 우선 탐색)를 이용해서 푸는 문제이다.

 

for i in range(start, len(S)):
	answer[depth] = S[i]
    dfs(i + 1, depth + 1)

이 부분만 이해할 수 있다면 이 문제는 쉽게 해결할 수 있을 것이다!

728x90