2017-10-18 1 views
0

내 아래 코드는 약 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 개의 제품이 있습니다.

정확히 두 제품을 구입할 것입니다 (서로 달라야 함). 선택한 두 제품의 최대 가격을 찾아보십시오. 또한 두 가지 제품을 선택하고 총 가격의 가능한 최대 품질을 얻는 방법의 수를 찾으십시오.

+1

반복자 조합을 구체화하지 않아도 시작할 수 있습니다 ... –

+1

왜 반복자가 잘 작동하면 많은 목록을 작성합니까? – user2357112

+0

@ user2357112 좋아, 내가 반복자를 사용하여 목록을 바꿀 것이다. –

답변

관련 문제