반응형
https://www.acmicpc.net/problem/6603
6603번: 로또
입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있다. 첫 번째 수는 k (6 < k < 13)이고, 다음 k개 수는 집합 S에 포함되는 수이다. S의 원소는 오름차순으로
www.acmicpc.net
이 문제는 전에 풀었던 문제처럼 브루트 포스의 재귀 방식을 이용해서 풀었다.
visited를 통해 그 수를 방문했는지 확인하였고 i라는 인덱스를 통해 어디서부터 방문해야할지 결정했다(테스트케이스가 오름차순으로 되어있고 중복이 없기 때문).
항상 재귀 후에는 전에 사용했던 res값이나 visited를 초기화해주었다.
import sys
input= sys.stdin.readline
def recur(visited,i,cnt,res):
if cnt==6:
print(" ".join(map(str,res)))
return
for idx in range(i,k+1):
if not visited[idx]:
visited[idx]=1
res.append(ary[idx])
recur(visited,idx+1,cnt+1,res)
res.pop()
visited[idx]=0
while True:
ary = list(map(int,input().split()))
if ary[0]==0:
break
k=ary[0]
visited=[0]*(k+1)
recur(visited,1,0,[])
print()
반응형
'Algorithm > Baekjoon' 카테고리의 다른 글
Python 2529번 부등호 (0) | 2022.07.31 |
---|---|
Python 1182번 부분수열의 합 (0) | 2022.07.31 |
Python 1759번 암호 만들기 (0) | 2022.07.28 |
2096번 파이썬 (0) | 2022.05.04 |
1309번 파이썬 (0) | 2022.04.13 |