Notice
Recent Posts
Recent Comments
Link
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Archives
Today
Total
관리 메뉴

Life Engineering

[BOJ 6603] 로또 (Python3) 본문

Problem Solving

[BOJ 6603] 로또 (Python3)

흑개 2021. 2. 17. 21:11

www.acmicpc.net/problem/6603

 

6603번: 로또

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

www.acmicpc.net

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
array=[]
visited=[False]*13
while True:
    l=list(map(int, input().split()))
    if l[0]!=0:
        array.append(l)
    else:
        break
 
def dfs(i, start, count):
    if count==6:
        for j in range(1,len(array[i])):
            if visited[j]==True:
                print(array[i][j],end=' ')
        print("")
        return
    for j in range(start,len(array[i])):
        visited[j]=True
        dfs(i,j+1, count+1)
        visited[j]=False
 
for i in range(len(array)):
    dfs(i,1,0)
    print("")
 
cs

DFS로 조합(n개 중 k개를 뽑는)만드는 문제이다. 백트래킹을 사용하여 경우의 수를 구하면 된다. 

이미 확정된 수를 count로 두고, 여러가지 경우의 수를 만들면 된다.

 

fdsaf

[