파이썬 메모리 초과 오류

조회수 624회
list_1 = []
list_2 = []
list_3 = []
odd_num = {1,3,5,7,9}

for i in range(1,1000000001):
    str1 = str(i)
    if int(str1[-1]) != 0:
        list_1.append(i)

for i in list_1:
    temp = i + int(str(i)[::-1])
    list_2.append(temp)

for i in list_2:
    str1 = str(i)
    list_temp = []
    for j in range(0,len(str1)):
        list_temp.append(int(str1[j]))
    if set(list_temp) | odd_num == odd_num:
        list_3.append(i)


print(len(list_3))

알고리즘 문제를 푸는데 10억으로 범위를 잡아서 메모리가 에러가 납니다. 아마 오버플로우 되는 거 같은데 64비트 파이썬을 깔면 해결이 되나요? 어떤 분들은 넘파이의 어레이를 쓰면 된다고 하는데 제가 넘파이를 안 배워서 그런데 넘파이 어레이에서 append와 같은 함수가 있나요?

혹시 64비트 파이썬에서 이 코드좀 돌려주실 분 없나요? 회사에서 풀었는데 컴퓨터가 xp라 64비트가 안 됩니다. 답만 알면 되는데

  • (•́ ✖ •̀)
    알 수 없는 사용자
  • 돌려보고 있는데, 한시간 넘을지도 모르겠네요. 이정도면 문제를 풀지 못한 거에요. 굉장히 비효율적인 코드가 많이 보여요. 1000000001을 적당히 작은수로 해서 돌려가면서 코드를 좀 더 효율적으로 바꾸어 보세요. 앗 결국 첫번째 루프에서 메모리에러 발생해요. 그리고 아주 긴 루프를 돌릴때에는 tqdm 이 아주 좋은 친구입니다. nowp 2020.9.22 15:53

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)