Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

파이썬에서 숫자 쌍과 숫자 세 쌍을 얻을 수 있는지 확인하는 프로그램

<시간/>

숫자 문자열 s가 있다고 가정합니다. 한 쌍의 동일한 문자를 가질 수 있고 나머지 문자열이 동일한 문자의 트리플렛을 여러 개 형성할 수 있는 배열이 있는지 확인해야 합니다.

따라서 입력이 s ="21133123"과 같으면 출력은 True가 됩니다. 왜냐하면 "22"는 쌍으로, "111", "333"은 두 개의 삼중항을 형성하기 위해 2개의 2가 있기 때문입니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • d :=s에 있는 각 요소의 빈도를 포함하는 목록

  • d의 각 k에 대해 수행

    • d[k] :=d[k] - 2

    • d[i] mod 3이 d의 모든 i에 대해 0이면

      • 참을 반환

    • d[k] :=d[k] + 2

  • 거짓을 반환

예시

더 나은 이해를 위해 다음 구현을 살펴보겠습니다.

from collections import Counter
def solve(s):
   d = Counter(s)
   for k in d:
      d[k] -= 2
      if all(d[i] % 3 == 0 for i in d):
         return True
      d[k] += 2
   return False

s = "21133123"
print(solve(s))

입력

"21133123"

출력

True