코팅테스트/백준 문제 모음
백준 6603번 파이썬 문제풀이(브루트 포스 - 로또)
유지광이
2021. 10. 26. 13:35
728x90
코드1(라이브러리 이용)
import itertools
while True:
array = list(map(int, input().split()))
k = array[0]
S = array[1:]
for i in itertools.combinations(S, 6):
print(*i)
if k == 0:
exit()
print()
-> 따로설명은 생략하겠다. 조합 라이브러리를 사용하게 허용해놓아서 사실상 배열에 k값도 들어가있기 때문에 k값이랑 로또 번호하고 분리만 해주면 쉽게 풀수 있는 문제이다.
코드2(재귀 이용)
def dfs(depth, idx):
if depth == 6:
print(*out)
return
for i in range(idx, k):
out.append(S[i])
dfs(depth + 1, i + 1)
out.pop()
while True:
array = list(map(int, input().split()))
k = array[0]
S = array[1:]
out = []
dfs(0, 0)
if k == 0:
exit()
print()
-> 사실 이문제는 재귀로 dfs를 이용해서 풀어야 되는 문제이다. 실제 시험에는 분명 라이브러리 사용을 막을 테니 dfs를 이용하면 되는데 이문제는 https://ji-gwang.tistory.com/257 와 거의 동일한 문제이니 위의 코드가 이해되지 않는다면 해당 글을 보기를 바란다.
728x90