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

Python에서 모든 x를 y보다 먼저 만드는 데 필요한 뒤집기 횟수를 계산하는 프로그램


문자 x와 y가 포함된 소문자 문자열 s가 있다고 가정합니다. 이제 단일 x를 y로 또는 그 반대로 변경하는 작업을 고려하십시오. 모든 x가 모든 y보다 먼저 오도록 설정하기 위해 해당 작업을 수행하는 데 필요한 최소 횟수를 찾아야 합니다.

따라서 입력이 s ="yxyyyyxyxx"와 같으면 출력은 4가 됩니다.

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

  • y_left :=0

  • x_right :=s에 있는 "x"의 수, res :=s에 있는 "x"의 수

  • s의 각 항목에 대해 수행

    • 항목이 "x"와 같으면

      • x_right :=x_right − 1

    • 그렇지 않으면

      • y_left :=y_left + 1

    • res :=최소 res 및 (y_left + x_right)

  • 반환 해상도

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

예시

class Solution:
   def solve(self, s):
      y_left = 0
      x_right = res = s.count("x")
      for item in s:
         if item == "x":
            x_right -= 1
         else:
            y_left += 1
         res = min(res, y_left + x_right)
      return res
ob = Solution()
s = "yxyyyyxyxx"
print(ob.solve(s))

입력

"yxyyyyxyxx"

출력

4