반응형
6603번: 로또
입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있다. 첫 번째 수는 k (6 < k < 13)이고, 다음 k개 수는 집합 S에 포함되는 수이다. S의 원소는 오름차순으로
www.acmicpc.net
코드 작성
def dfs(lott, num):
if lott == 6:
print(*ans)
return
for i in range(num, k):
ans.append(s[i])
dfs(lott + 1, i + 1)
ans.pop()
while True:
arr = list(map(int, input().split()))
k = arr[0]
s = arr[1:]
ans = []
dfs(0, 0)
print()
if k == 0:
exit()
코드 풀이
#1. dfs(lott, num)의 초깃값을 dfs(0,0)으로 세팅하고 for문을 돌린다.
만약 k가 7이라면
(1) s의 첫번째값을 ans에 넣고
(2) dfs(1,1) → lott 는 1
(3) s의 두번째 값을 ans에 넣고
(4) dfs(2,2) → lott 는 2
(5) s의 세번째 값을 ans에 넣고
(6) dfs(3,3) → lott 는 3
(7) s의 네번째 값을 ans에 넣고
(8) dfs(4,4) → lott 는 4
(9) s의 다섯번째 값을 ans에 넣고
(10) dfs(5,5) → lott 는 5
(11) s의 여섯번째 값을 ans에 넣고
(12) dfs(6,6) → lott 는 6
(13) ans 출력
(14) ans 여섯번째 값 pop
(15) dfs(6,7) → lott 는 6
(16) ans 출력
(17) ans 여섯번째 값 pop
(18) dfs(5,6) → dfs(5,7) → dfs(4,5) → dfs(4,6) → dfs(4,7) → dfs(3,4)
#2. 테스트 케이스 사이 빈줄 출력
#3. k가 0일경우 exit(프로그램 종료)
반응형
'코딩 > Python' 카테고리의 다른 글
머신러닝 알고리즘 익히기(Logistic Regression, Random Forest, Gradient Boosting, Light GBM), (0) | 2023.04.18 |
---|---|
파이썬, openpyxl(6) 수식작성, 병합, 이미지삽입 (0) | 2023.03.31 |
[Python] 백준 10819 차이를 최대로 (0) | 2022.12.29 |
[Python] 백준 15667 (0) | 2022.12.24 |
[Python] 백준 10972 다음순열 (0) | 2022.12.24 |