이 튜토리얼에서는 Python의 내장 함수인 permutations를 사용하여 문자열의 모든 순열(permutation)을 구하는 방법을 알아보겠습니다. permutations 메서드는 표준 라이브러리인 itertools 모듈에 포함되어 있어 별도의 설치 없이 바로 사용할 수 있습니다.
문자열의 순열을 구하는 절차
- itertools 모듈을 임포트합니다.
- 순열을 구할 문자열을 초기화합니다.
- itertools.permutations 메서드를 호출하여 문자열의 순열을 생성합니다.
- 메서드는 객체를 반환하므로, 이를
list()로 변환하여 결과를 확인합니다.- 변환된 리스트에는 각 순열이 튜플(tuple) 형태로 저장됩니다.
예제 코드
그럼 실제 프로그램을 살펴보겠습니다.
## 모듈 임포트
import itertools
## 문자열 초기화
string = "XYZ"
## itertools.permutations 메서드 사용
permutaion_list = list(itertools.permutations(string))
## 리스트 형태의 결과 출력
print("-----------문자열 순열(튜플 형태)----------------")
print(permutaion_list)
## 'join' 메서드를 사용해 튜플을 문자열로 변환
print("-------------문자열 형태의 순열-----------------")
for tup in permutaion_list:
print("".join(tup))실행 결과
위 프로그램을 실행하면 다음과 같은 결과를 얻을 수 있습니다.
-----------문자열 순열(튜플 형태)----------------
[('X', 'Y', 'Z'), ('X', 'Z', 'Y'), ('Y', 'X', 'Z'), ('Y', 'Z', 'X'), ('Z', 'X', 'Y'), ('Z', 'Y', 'X')]
-------------문자열 형태의 순열-----------------
XYZ
XZY
YXZ
YZX
ZXY
ZYX추가 팁
3개의 서로 다른 문자로 이루어진 문자열의 순열 개수는 3! = 6개입니다. 일반적으로 길이가 n인 문자열의 순열은 n!개가 생성되므로, 문자열이 길어질수록 결과의 개수가 기하급수적으로 늘어난다는 점에 유의하세요. 만약 일부 문자만 사용한 부분 순열이 필요하다면 itertools.permutations(string, r)처럼 두 번째 인자 r을 지정하면 됩니다.
프로그램에 대해 궁금한 점이 있다면 댓글로 남겨주세요.