[백준 15649번][Python/파이썬] N과 M (1)

공학도 Lee·2023년 2월 9일
0

백준 문제 풀이

목록 보기
37/63

1. 문제


출처: 백준 15649번 N과 M (1)

2. 풀이


결국 순열을 뽑으라는 문제여서, 처음에는 모듈을 쓰는 것인가 했었다.

다른 분들의 풀이를 참고하니, 대부분 DFS (Depth-First Search)를 쓰고 있었다.

드디어, 말로만 들어왔던 DFS를 쓰는 문제에 접어들었다.

이번 문제의 경우에는, 숫자가 중복되면 안 되기 때문에 출력할 값에 들어있지 않은 숫자들만 뒤에 추가하는 방식으로 DFS 함수를 구현하면 된다.

3. 소스코드


N,M = map(int,input().split())

lst = []
def dfs(N,M):
    if len(lst) == M:
        for i in lst:
            print(i,end = " ")
        print()
        return
    else:
        for i in range(1,N+1):
            if i not in lst:
                lst.append(i)
                dfs(N,M)
                lst.pop()

dfs(N,M)

4. 그 외


처음 문제를 접했을 때는, 다른 분의 풀이를 봐도 전혀 이해가 안 되었다.

아무래도, DFS나 BFS 이런 것들을 전혀 고민해 보지 않았던 시절이라 그런 듯하다.

이후 단계들 문제로 꽤나 단련이 되어서인지, 이제는 금방 금방 떠오르는 게 뿌듯하긴 하다.

profile
이창민, Changmin Lee

0개의 댓글