For Programmer

백준 15654번 파이썬 문제풀이(브루트 포스 - N과M(5)) 본문

코팅테스트/백준 문제 모음

백준 15654번 파이썬 문제풀이(브루트 포스 - N과M(5))

유지광이 2021. 10. 19. 17:06
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, n, m):
    if depth == m:
        print(' '.join(out))
        return
    for i in array:  # 입력받은 배열의 원소를 돈다
        if not visited[i]:  # 만약 해당 원소가 방문하지 않았다면
            visited[i] = True  # 방문한 것으로 바꿔주고
            out.append(str(i))  # 그 값을 추가
            solve(depth + 1, n, m)  # 다시 깊이+1 해준다음 다시 돈다.
            visited[i] = False  # 다 돌았으면 방문안한것으로 False
            out.pop()  # 그 값을 지워준다.


solve(0, n, m)

-> 15649번이랑 거의 동일한 문제인데 원하는 수를 입력받는 점에서 약간 다르다. 그 부분만 생각한다면 나머지는 동일한 코드이다.

728x90
Comments