백준(BOJ) 문제 풀이

백준 15649번 문제(N과 M(1)) 파이썬(Python) 풀이 [로밍맨]

로밍맨 2022. 8. 29. 18:02
728x90
반응형

문제 링크

https://www.acmicpc.net/problem/15649

 

15649번: N과 M (1)

한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해

www.acmicpc.net

 

정답 코드는 아래와 같습니다.

1
2
3
4
5
6
7
import itertools
 
n, m = map(int, input().split())
for perm in itertools.permutations(list(range(1, n+1)), m):
    for item in perm:
        print(item, end = ' ')
    print("")
cs

 

다른 언어를 사용한다면 itertools의 permutation 구현을 직접 해야겠지만,

python 을 이용하는 경우 기본 library 에 포함되어 있으므로 매우 쉽고 간편하게 계산할 수 있습니다.

다만, permutation 의 경우 언어에 따라 기본 library 로 제공되는 경우가 적기 때문에

python 으로 풀이할 수 없는 경우를 대비하여 permutation 의 원리를 이해하시기를 권장드립니다.

backtracking 이라는 키워드로 검색하면 많은 자료를 찾아보실 수 있을 것입니다.

 

풀이는 아래 영상을 참고 바랍니다.

https://www.youtube.com/watch?v=2qjrv4UMpVM 

저작권 라이선스: CC BY (출처만 표시하면 자유롭게 이용 가능)

728x90
반응형