Notice
Recent Posts
Recent Comments
관리 메뉴

즐겁게, 코드

백준 6603번 : 로또 본문

💯 알고리즘/백준 온라인 저지

백준 6603번 : 로또

Chamming2 2021. 9. 4. 21:35

[문제 링크] - https://www.acmicpc.net/problem/6603

 

6603번: 로또

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

www.acmicpc.net

N과 M 유형의 백트래킹 문제입니다.

단, 중복된 수를 뽑아서는 안되며 로또번호를 오름차순으로 나열해야 한다는 점만 유의하시면 되는 문제입니다.

정답 코드 (Python)

S = []
lottery = [0] * 13
visited = []

def backTrack(depth):
    global S
    if depth == 6:
        for i in range(6):
            print(lottery[i], end=' ')
        print()

    for i in range(len(S)):
        # S[i] not in visited : 중복선택 방지용 로직
        # S[i] > lottery[depth - 1] : 현재 숫자가 이전에 선택한 번호보다 큰지 확인하는 로직
        if S[i] not in visited and S[i] > lottery[depth - 1]:
            lottery[depth] = S[i]
            visited.append(S[i])
            backTrack(depth + 1)
            lottery[depth] = 0
            visited.pop()

while 1:
    temp = list(map(int, input().split()))
    if temp[0] == 0:
        break
    S = temp[1:]
    backTrack(0)
    print()

반응형
Comments
소소한 팁 : 광고를 눌러주시면, 제가 뮤지컬을 마음껏 보러다닐 수 있어요!
와!! 바로 눌러야겠네요! 😆