내 아래 코드는 약 30000 KB를 사용하며 약 30000 입력 요소를 사용하며 메모리 사용량 (256MB) 당 제한이 있으므로이를 최적화 할 수있는 방법이 있습니까?이 코드를 최적화하여 메모리 사용을 줄이는 방법은 무엇입니까?
import itertools
def get_subsets(arr,m) :
return list(itertools.combinations(arr,m))
def _9(string) :
count =0
for i in range(len(string)-1 , -1 ,-1) :
if string[i] != '9' :
break
count += 1
return count
if __name__ == "__main__" :
length = int(input())
arr = [int(x) for x in input().strip().split()]
pairs = get_subsets(arr,2)
max_9 = [_9(str(x[0]+x[1])) for x in pairs]
max_9_0 = max(max_9)
print(max_9_0,max_9.count(max_9_0))
문제는 : 은 이제 끝 (9 동일한 맨 오른쪽 자리의 수)에 석장의 숫자로 가격의 품질을 정의 할 수 있습니다. 예를 들어 숫자 2999와 123912391999는 모두 품질 3이고 숫자 952는 품질 0입니다.
별개의 가격 t1, t2, ..., tn을 갖는 n 개의 제품이 있습니다.
정확히 두 제품을 구입할 것입니다 (서로 달라야 함). 선택한 두 제품의 최대 가격을 찾아보십시오. 또한 두 가지 제품을 선택하고 총 가격의 가능한 최대 품질을 얻는 방법의 수를 찾으십시오.
반복자 조합을 구체화하지 않아도 시작할 수 있습니다 ... –
왜 반복자가 잘 작동하면 많은 목록을 작성합니까? – user2357112
@ user2357112 좋아, 내가 반복자를 사용하여 목록을 바꿀 것이다. –