For Programmer
백준 15655번 파이썬 문제풀이(브루트 포스 - N과M(6)) 본문
728x90
코드
n, m = map(int, input().split())
array = [int(x) for x in input().split()]
array.sort() # 오름차순으로 출력하기 위해 정렬
visited = [False] * (max(array) + 1) # 방문했는지 확인을 위한 리스트
out = [] # 출력을 위한 리스트
def solve(depth, idx, n, m):
if depth == m:
print(' '.join(out))
return
for i in range(idx, len(array)): # 입력받은 배열의 원소를 돈다
if not visited[i]: # 만약 해당 원소가 방문하지 않았다면
visited[i] = True # 방문한 것으로 바꿔주고
out.append(str(array[i])) # 그 값을 추가
solve(depth + 1, i + 1, n, m) # 다시 깊이+1 해준다음 다시 돈다.
visited[i] = False # 다 돌았으면 방문안한것으로 False
out.pop() # 그 값을 지워준다.
solve(0, 0, n, m)
-> 앞선 15650번 조합 문제와 거의 동일한 문제이다. 재귀에서 인덱스를 이용한다는 점만 잘 생각하면 된다.
728x90
'코팅테스트 > 백준 문제 모음' 카테고리의 다른 글
백준 14501번 파이썬 문제풀이(브루트 포스 - 퇴사) (0) | 2021.10.20 |
---|---|
백준 1759번 파이썬 문제풀이(브루트 포스 - 암호 만들기) (0) | 2021.10.20 |
백준 15654번 파이썬 문제풀이(브루트 포스 - N과M(5)) (0) | 2021.10.19 |
백준 15652번 파이썬 문제풀이(브루트 포스 - N과M(4)) (0) | 2021.10.19 |
백준 15651번 파이썬 문제풀이(브루트 포스 - N과M(3)) (0) | 2021.10.19 |
Comments