파이썬에는 굉장히 다양한 라이브러리들이 존재한다. 이러한 라이브러리들은 문제를 굉장히 쉽게 해결하는데에 도움을 준다. 15650번 같은 경우도 파이썬의 특정 라이브러리를 이용하면 굉장히 쉽게 풀린다.
바로 itertools라는 라이브러리이다. 해당 라이브러리에는 combinations와 permutations가 존재하는데, 각각 조합과 순열이다. 따라서 문제에서 조합이나 순열을 구해야하는 경우 해당 라이브러리를 통해 바로 구할 수 있다.
사용법은 다음과 같다.
import sys from itertools import combinations input = sys.stdin.readline # N과 M을 입력받음 N, M = map(int, input().split()) # C에 조합의 내용들을 저장함 C = combinations(range(1, N+1), M) # C를 돌면서 조합 내용을 출력, 이 때 i는 정수형이므로 map함수를 통해 str을 취해준 뒤 join 적용 for i in C: print(' '.join(map(str,i)))
파이썬을 많이 다루어보지 않은 사람들에게 마지막 print문의 ' '.join(map(str, i)))가 낯설 수도 있다. 나도 낯설었기 때문에 정리를 해보려고 한다. 우선 join 함수는 '구분자'.join(리스트)의 형태로 사용한다. 이는 리스트의 원소들을 구분자를 이용해 연결하겠다는 뜻이다. 그 다음 map함수는 map(적용시킬 함수, 적용할 값들(반복 가능한 자료형))이다. 즉, 반복 가능한 자료형에 존재하는 값들 각각을 함수에 적용하고 싶을 때 사용한다. 이 문제에서 마지막 줄은 i를 str형으로 변환하기 위해 map 함수를 사용하고 join함수를 통해 공백으로 값들을 연결해서 출력하겠다는 뜻이된다.