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

Python에서 총 재생 시간을 60으로 나눌 수 있는 노래 쌍

<시간/>

노래 목록이 있다고 가정하고 i번째 노래의 지속 시간은 [i]초입니다. 총 시간(초)을 60으로 나눌 수 있는 노래 쌍의 수를 찾아야 합니다.

따라서 시간 배열이 [30, 20, 150, 100, 40]과 같으면 답은 3이 됩니다. 세 쌍은 모든 경우에 대해 (3, 150), (20, 100), (20, 40)입니다. 총 지속 시간은 60으로 나눌 수 있습니다.

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

  • 나머지를 저장하려면 맵 rem을 가져오세요. 다음으로 설정 :=0
  • 시간 내 모든 요소 i에 대해 −
    • rem에서 i가 0과 0으로 나누어지면 ans :=ans + rem[0]
    • o 그렇지 않으면 60 – (i mod 60) in rem, ans :=ans + rem[60 – (i mod 60)]
    • rem에서 내가 mod 60이면 rem[i mod 60] :=rem[i mod 60] + 1
    • 그렇지 않으면 rem[i mod 60] :=1
  • Ans를 반환

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

class Solution(object):
   def numPairsDivisibleBy60(self, time):
      ans = 0
      remainder = {}
      for i in time:
         if i % 60 == 0 and 0 in remainder:
            ans += remainder[0]
         elif 60 - (i%60) in remainder:
            ans += remainder[60 - (i%60)]
         if i % 60 in remainder:
            remainder[i%60]+=1
         else:
            remainder[i%60]=1
      return ans
ob1 = Solution()
print(ob1.numPairsDivisibleBy60([30,20,150,100,40]))

입력

[30,20,150,100,40]

출력

3