동캄의 코딩도장

백준 6603 [로또] 파이썬 본문

코테/BOJ

백준 6603 [로또] 파이썬

동 캄 2021. 12. 2. 14:29

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

 

6603번: 로또

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

www.acmicpc.net

#6603
while(True):
    lst=list(map(int,input().split()))
    k=lst.pop(0)
    s=[]
    if k==0:
        break
    def dfs():
        if len(s)==6:
            print(' '.join(map(str,s)))
            return
        for i in lst:
            if len(s)==0:
                s.append(i)
                dfs()
                s.pop()
            elif s[len(s)-1]<i:
                s.append(i)
                dfs()
                s.pop()
    dfs()
    print()

lst를 dfs를 사용하여 순차적으로 탐사하며, s에 속해있지 않으면 추가하는 방식으로 s를 갱신해 나간다. len(s)==6이면, s의 요소를 print하고 값을 return 한다.

'코테 > BOJ' 카테고리의 다른 글

백준 12865 [평범한 배낭] 파이썬  (0) 2021.12.15
백준 9251 [LCS] 파이썬  (0) 2021.12.14
백준 10974 [모든 순열] 파이썬  (0) 2021.12.02
백준 15657 [N과M (8)] 파이썬  (0) 2021.12.02
백준 15656 [N과M (7)] 파이썬  (0) 2021.12.02