음수가 아닌 값을 가진 num이라는 배열이 있다고 가정합니다. 배열에 있는 좋은 인덱스 쌍을 찾아야 합니다. 대답이 너무 크면 대답 mod 10^9+7을 반환합니다. 여기에서 한 쌍의 인덱스(i, j)는 다음 조건을 모두 충족할 때 nice라고 합니다. 1. 0 <=i
참고 − 여기서 rev()는 정수의 양수 부분만 반전하므로 rev(564)가 있으면 465를 의미하고 rev(540)가 있으면 45를 반환합니다.
따라서 입력이 nums =[97,2,42,11]과 같으면 첫 번째 [97 + rev (42) =97+24 =121, 그리고 42 + rev(97) =42 + 79 =121] 그리고 두 번째 [2 + rev(11) =2 + 11 =13 and 11 + rev(2) =13].
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
-
m :=(10^9) +7
-
dic :=기본값이 0인 빈 맵
-
숫자의 각 숫자에 대해 수행
-
rev :=숫자의 역순
-
dic[num - rev] 1 증가
-
-
해상도:=0
-
dic의 모든 값 목록에 있는 각 val에 대해 수행
-
res :=res + (val*(val-1))/2의 몫
-
-
res mod m 반환
예시
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
from collections import defaultdict def solve(nums): m = (10**9)+7 dic = defaultdict(int) for num in nums: rev=int(str(num)[::-1]) dic[num-rev]+=1 res=0 for val in dic.values(): res += (val*(val-1)) // 2 return res % m nums = [97,2,42,11] print(solve(nums))
입력
[97,2,42,11]
출력
2