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

파이썬에서 5로 나눌 수 있는 이진 접두사

<시간/>

0과 1의 배열 A가 있다고 가정하고 N[i]가 이진수로 해석되는 인덱스 A[0]에서 A[i]까지의 i번째 하위 배열이라고 가정합니다. N[i]가 5로 나누어 떨어지는 경우에만 대답[i]가 참인 부울 답변 목록을 찾아야 합니다.

따라서 입력이 [0,1,1,1,1,1]과 같으면 출력은 [true,false,false,false,true,false]

가 됩니다.

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

  • 길이 :=A의 크기
  • ans:=크기 길이의 배열을 만들고 false로 채우기
  • 숫자:=A의 각 요소를 연결하여 이진 값
  • 0부터 길이까지의 범위에 있는 i에 대해
    • 숫자 모드 5가 0과 같으면
      • ans[length-i-1] :=참
    • 숫자:=숫자 / 2
  • 반환

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

예시

class Solution:
   def prefixesDivBy5(self, A):
      length=len(A)
      ans=[False]*length
      number=int("".join(map(str,A)),2)
      for i in range(length):
         if number%5==0:
            ans[length-i-1]=True
            number=number>>1
      return ans
ob = Solution()
print(ob.prefixesDivBy5([0,1,1,1,1,1]))

입력

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

출력

[True, False, False, False, True, False]