728x90
6603번: 로또
입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있다. 첫 번째 수는 k (6 < k < 13)이고, 다음 k개 수는 집합 S에 포함되는 수이다. S의 원소는 오름차순으로
www.acmicpc.net
로또 1등 한번만 받아보고싶습니다.....
while True:
k, *S = map(int, input().split())
if k == 0: break
visited = [0] * k
def lotto(index=0, arr=[]):
if index == 6:
print(*arr)
return
else:
for i in range(index, k):
if visited[i] == 0:
if arr and arr[-1] > S[i]: continue
visited[i] = 1
lotto(index + 1, arr + [S[i]])
visited[i] = 0
lotto()
print()
백트래킹을 사용하여 모든 조합을 구하는 것처럼 만들었고, 그 안에서도 오름차순인 것만 뽑아내었다.
백트래킹중에서 조합구하는건 그래도 할만한데 다른것들이 너무 힘들다....
머리에 쥐날것같지만 손에 익을때 까지 문제를 계속 풀어야겠다
'STUDY > Algorithm' 카테고리의 다른 글
[백준] 1759 암호만들기 (0) | 2021.03.05 |
---|---|
[백준] 3980 선발명단 (1) | 2021.03.05 |
[백준] 2583 영역구하기 (0) | 2021.03.04 |
[백준] N과 M (시리즈) (0) | 2021.03.04 |
[백준] 2798 블랙잭 (0) | 2021.03.04 |