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

점수가 파이썬에서 이진 문자열로 주어지는 게임의 승자를 찾으십시오


배구 경기의 점수를 나타내는 하나의 이진 문자열이 있다고 가정하면 다음 조건에 따라 경기의 승자를 찾아야 합니다. -

  • 두 팀이 서로 경쟁하며 15점을 먼저 득점한 팀이 승자가 됩니다. 단, 양 팀 모두 14점에 도달한 경우는 예외입니다.

  • 양 팀이 14점에 도달했을 때 2점 차로 앞서는 팀이 승자가 됩니다.

주어진 이진 문자열에서 0은 팀이 1점을 잃음을 나타내고 1은 팀이 1점을 얻음을 나타냅니다. 우리는 팀이 경기에서 이기거나 졌는지 확인해야 합니다.

따라서 입력이 점수 ="1001100110111001110011011"과 같으면 출력은 팀 승리가 됩니다.

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

  • score_cnt :=[0,0]

  • 범위 0에서 점수 크기까지의 i에 대해

    • pos :=ASCII of(score[i]) - ASCII of('0')

    • score_cnt[pos] :=score_cnt[pos] + 1

    • score_cnt[0]이 n 및 score_cnt[1] - n - 1과 같으면

      • "팀 패배" 반환

    • score_cnt[1]이 n과 같고 score_cnt[0]

      • "팀 승리" 반환

    • score_cnt[0]이 n - 1과 같고 score_cnt[1]이 n - 1과 같으면

      • score_cnt[0] :=0

      • score_cnt[1] :=0

      • 루프에서 나오다

  • 나는 :=나는 + 1

  • 범위 i에서 점수 크기까지의 i에 대해

    • pos :=ASCII of(score[i]) - ASCII of('0')

    • score_cnt[pos] :=score_cnt[pos] + 1

    • if |score_cnt[0] - score_cnt[1]| 2와 같으면

      • score_cnt[0]> score_cnt[1]이면

        • "팀 패배" 반환

      • 그렇지 않으면

        • "팀 승리" 반환

예시

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

def predictWinner(score, n):
score_cnt = [0,0]
   for i in range(len(score)):
      pos = ord(score[i]) - ord('0')
      score_cnt[pos] += 1
      if (score_cnt[0] == n and score_cnt[1] < n - 1):
         return "Team lost"
      if (score_cnt[1] == n and score_cnt[0] < n - 1):
         return "Team won"
      if (score_cnt[0] == n - 1 and
         score_cnt[1] == n - 1):
         score_cnt[0] = 0
         score_cnt[1] = 0
         break
   i += 1
   for i in range(i, len(score)):
      pos = ord(score[i]) - ord('0')
      score_cnt[pos] += 1
      if (abs(score_cnt[0] - score_cnt[1]) == 2):
         if (score_cnt[0] > score_cnt[1]):
            return "Team lost"
         else:
            return "Team won"
score = "1001010101111011101111"
n = 15
print(predictWinner(score, n))

입력

"1001010101111011101111"

출력

Team won