[Python] 코딩 도장 - 메모리공간 관리
Updated:
코딩 도장 사이트의 문제를 직접 풀어본 내용을 정리하여 올립니다.
코딩 도장에서 여러 문제를 확인할 수 있습니다.
난이도 순으로 차근차근 풀어보려 합니다.
[문제: 메모리공간 관리] - Lv.1
프로그램 실행 순서
-
입력할 정수의 개수를 사용자로부터 입력 받는다.
-
입력받은 정수의 개수만큼 정수를 입력받는다.
-
입력받은 정수의 합과 평균 값을 출력한다.
-
할당된 메모리공간을 비운다.
요구사항
-
메모리공간은 사용자의 입력 수의 따라 변동된다.
-
사용한 공간은 마지막에 비워야 한다.
-
배열을 사용하면 안된다.
출처: https://codingdojang.com/scode/478?answer_mode=hide
[풀이]
import scipy
import gc
# 1
n = int(input("정수의 개수를 입력하세요."))
# 2
lst = []
for i in range(n):
lst.append(int(input(f"{i+1}번째 정수를 입력하세요.")))
# 3
print("정수의 합:", sum(lst))
print("정수의 평균:", sum(lst) / n)
# 4
del n, lst
print(gc.collect())
정수의 개수를 입력하세요.3
1번째 정수를 입력하세요.1
2번째 정수를 입력하세요.2
3번째 정수를 입력하세요.3
정수의 합: 6
정수의 평균: 2.0
197
입력받은 정수의 개수만큼 숫자를 추가해서 합과 평균을 구한다.
사실 메모리에 대해서 아직까지는 개념이 부족한 것 같다.
메모리 해제에 대해서 검색하다가 DelftStack을 참조해서 작성하였다.
del
로 객체를 삭제하였고, gc.collect()
로 메모리에서 객체를 해제하였다.
이전에 머신러닝 완벽가이드 텍스트 분석[실습]에서도 사용한 경험이 있다.
[추천 풀이]
num_of_n = int(input("입력할 정수 개수: "))
Sum = 0
for x in range(num_of_n):
Sum += int(input("Enter num%d: " % (x+1)))
print("Sum: %d" % Sum)
print("Avg: %.2f" % (Sum / num_of_n))
del num_of_n, Sum, x
입력할 정수 개수: 3
Enter num1: 1
Enter num2: 2
Enter num3: 3
Sum: 6
Avg: 2.00
이번 문제는 추천수가 거의 1개, 2개로 풀이가 다양해서 그 중 하나를 가져왔다.
내 풀이랑 거의 유사한 형태인데 gc.collect()
를 사용하진 않았다.
난이도순으로 문제를 풀다보니 오래된 문제여서 그런걸까? 잘 모르겠다.
추가로 사람들이 토론한 내용을 보니 배열을 사용하지 말란게 리스트도 안된다는 뜻이라 한다..
단순하게 넘파이 배열을 생각했는데.. 어쨌든 이 분도 리스트는 사용하지 않았다.
Leave a comment