본문 바로가기

스터디 1일 1커밋

240408 [BOJ/백준] 6603. 로또

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

 

6603번: 로또

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

www.acmicpc.net


나의 코드

while True:
    k, *S = map(int, input().split())
    if k == 0:
        break

    def backtracking(length, ans):
        if length == 6:
            print(*ans)
            return

        else:
            for i in range(length, k):
                if ans and ans[-1] >= S[i]:
                    continue
                backtracking(length+1, ans+[S[i]])


    backtracking(0, [])
    print()

 

결과


암호만들기와 비슷한 문제였는데 아직은 부족한가보닼ㅋㅋㅋㅋㅋㅋㅋㅋㅋ 되게 금방 큰 틀은 짰는데 else에서 조건문을 안줘서 에러가 난듯했다. 이런 문제 한 번만 더 풀면 이제 재귀로 조합을 짜고 출력하는 건 마스터 할 수 있을듯!