음수가 아닌 값을 가진 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