[백준][Python] 15650번 N과 M(2)

승민·2022년 1월 4일
0

Algorithm

목록 보기
5/19

📝 파이썬의 강력한 라이브러리

파이썬에는 굉장히 다양한 라이브러리들이 존재한다. 이러한 라이브러리들은 문제를 굉장히 쉽게 해결하는데에 도움을 준다. 15650번 같은 경우도 파이썬의 특정 라이브러리를 이용하면 굉장히 쉽게 풀린다.

바로 itertools라는 라이브러리이다. 해당 라이브러리에는 combinationspermutations가 존재하는데, 각각 조합과 순열이다. 따라서 문제에서 조합이나 순열을 구해야하는 경우 해당 라이브러리를 통해 바로 구할 수 있다.

사용법은 다음과 같다.

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함수를 통해 공백으로 값들을 연결해서 출력하겠다는 뜻이된다.

profile
안녕하세요 승민입니다

0개의 댓글