Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬 내장 함수로 문자열의 모든 순열(Permutation) 출력하기

문자열이 주어졌을 때, 해당 문자열로 만들 수 있는 모든 순열(permutation)을 화면에 출력하는 것이 이번 예제의 목표입니다. 파이썬에서는 itertools 모듈의 내장 함수인 permutations()를 활용하면 복잡한 재귀 로직 없이도 아주 간단하게 해결할 수 있습니다.

예제

입력 : string = 'XYZ'
출력 : XYZ
XZY
YXZ
YZX
ZXY
ZYX

알고리즘

전체적인 해결 과정은 다음과 같습니다.

1단계 : 문자열을 입력받는다.
2단계 : permutations() 함수를 사용해 문자열의 모든 순열을 생성한다.
3단계 : 생성된 순열을 하나씩 출력한다.

예제 코드

from itertools import permutations

def allPermutations(str1):
    # 문자열의 모든 순열을 생성
    per = permutations(str1)
    # 모든 순열을 출력
    print("Permutation Of this String ::>")
    for i in list(per):
        print(''.join(i))

# 메인 프로그램
if __name__ == "__main__":
    str1 = input("Enter the string ::>")
    allPermutations(str1)

코드 설명

  • permutations(str1)은 입력된 문자열의 각 문자들을 재배치한 모든 경우의 수를 튜플 형태로 반환합니다.
  • 반환된 결과는 반복 가능한(iterable) 객체이므로 list()로 변환한 뒤 반복문으로 순회합니다.
  • ''.join(i)를 사용해 튜플 형태의 문자들을 하나의 완성된 문자열로 합쳐서 출력합니다.

실행 결과

Enter the string ::> abc
Permutation Of this String ::>
abc
acb
bac
bca
cab
cba

정리

길이가 n인 문자열의 순열 개수는 n!개입니다. 위 예제처럼 itertools.permutations()를 사용하면 직접 재귀 함수를 작성하지 않고도 효율적이고 가독성 높은 코드로 모든 순열을 손쉽게 구할 수 있습니다.