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

문자열 구성에 필요한 최소 요소 개수를 구하는 Python 프로그램


주어진 문자열을 구성하기 위해 필요한 최소 요소 개수를 구하려면 'set' 연산자, 'combinations' 메서드, 'issubset' 메서드와 간단한 반복문을 활용하면 됩니다.

예제

아래는 이에 대한 데모입니다.

from itertools import combinations

my_list = ["python", "is", "fun", "to", "learn"]

print("The list is :")
print(my_list)

my_target_str = "onis"

my_result = -1
my_set_string = set(my_target_str)
complete_val = False
for value in range(0, len(my_list) + 1):

   for sub in combinations(my_list, value):

      temp_set = set(ele for subl in sub for ele in subl)

      if my_set_string.issubset(temp_set):
         my_result = value
         complete_val = True
         break
   if complete_val:
      break

print("The result is :")
print(my_result)

출력

The list is :
['python', 'is', 'fun', 'to', 'learn']
The result is :
2

설명

  • 필요한 패키지(itertools의 combinations)가 환경에 임포트됩니다.

  • 문자열 리스트가 정의되고 콘솔에 출력됩니다.

  • 구성하고자 하는 목표 문자열이 별도로 정의됩니다.

  • 목표 문자열은 집합(set)으로 변환되어 비교 대상이 됩니다.

  • 0부터 리스트 길이까지 값을 늘려가며 반복하고, 각 단계에서 리스트 요소들의 모든 조합(combinations)을 생성합니다.

  • 각 조합에 포함된 문자열들을 하나의 집합으로 합칩니다.

  • 'issubset' 메서드를 사용하여 목표 문자열의 집합이 해당 조합의 집합 안에 포함되는지 확인합니다.

  • 포함된다면 결과 변수에 현재 조합의 크기를 저장하고, 완료 플래그를 'True'로 설정한 뒤 반복문을 종료합니다.

  • 조합의 크기를 작은 값부터 순서대로 검사하므로, 처음으로 조건을 만족하는 값이 곧 최소 요소 개수입니다. 예제에서는 목표 문자열 "onis"를 만들기 위해 최소 2개의 요소("python"과 "is")가 필요하므로 결과로 2가 출력됩니다.