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

파이썬에서 보스 싸움


파이터라는 이진 목록과 보스라는 이진 목록의 또 다른 목록이 있다고 가정합니다. 전투기 목록에서 1은 전투기를 나타냅니다. 유사하게, bosses 목록 1에서 보스를 나타냅니다. 그 파이터는 보스보다 파이터가 더 많은 경우 보스의 행을 이길 수 있습니다. 패배한 보스 행이 제거된 새로운 보스 매트릭스를 반환해야 합니다.

따라서 입력이 전투기와 같은 경우 =[0,1,1]

0 1 1
0 0 0
0 0 1
0 1 1
1 1 1

그러면 출력은

0 1 1
1 1 1

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

  • Fighter_cnt :=전투기의 모든 요소의 합

  • 결과 :=새 목록

  • 보스의 각 행에 대해 수행

    • Fighter_cnt <=행에 있는 각 요소의 합계인 경우

      • 결과 끝에 행 삽입

  • 반환 결과

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

예시

class Solution:
   def solve(self, fighters, bosses):
      fighter_cnt = sum(fighters)
      result = []
      for row in bosses:
         if fighter_cnt <= sum(row):
            result.append(row)
      return result
ob = Solution()
fighters = [0, 1, 1]
bosses = [[0, 0, 0], [0, 0, 1], [0, 1, 1], [1, 1, 1]]
print(ob.solve(fighters, bosses))

입력

[0, 1, 1], [[0, 0, 0], [0, 0, 1], [0, 1, 1], [1, 1, 1]]

출력

[[0, 1, 1], [1, 1, 1]]