initial implementation

Verifying solution...
Test 1 passed!
Test 2 passed!
Test 3 failed  [Hidden]
Test 4 failed  [Hidden]
Test 5 failed  [Hidden]
This commit is contained in:
Seongbeom Park 2022-04-30 03:10:53 +09:00
parent ef27d7f8e4
commit a324af524f

View File

@ -0,0 +1,42 @@
def solution(l):
edges = {n : {'count': 1, 'multiple': set(), 'divisor': set()} for n in set(l)}
for i in range(len(l)):
x = l[i]
if edges[x]['count'] > 1:
continue
for j in range(i+1, len(l)):
y = l[j]
if x == y:
edges[x]['count'] += 1
elif x > y and x % y == 0:
edges[x]['divisor'].add(y)
edges[y]['multiple'].add(x)
elif y > x and y % x == 0:
edges[x]['multiple'].add(y)
edges[y]['divisor'].add(x)
result = 0
for x in edges:
# 1. (d, x, m)
result += len(edges[x]['divisor']) * len(edges[x]['multiple'])
# 2. (d, x, x) (x, x, m)
if edges[x]['count'] >= 2:
result += len(edges[x]['divisor']) + len(edges[x]['multiple'])
# 3. (x, x, x)
if edges[x]['count'] >= 3:
result += 1
return result
tests = [
([1, 1, 1], 1),
([1, 2, 3, 4, 5, 6], 3),
([2, 3, 4], 0),
([1, 1, 2, 3, 4, 5, 6], 8),
([3 for i in range(2000)], 1),
([i for i in range(1, 2000)], 40777),
]
for i, o in tests:
result = solution(i)
print(i, result == o, result, o)