데이터 구조 및 알고리즘 소개 | 000

2229 단어 pythonalgorithms
데이터 구조 및 알고리즘을 DSA라고 부르겠습니다.
작성된 코드는 Python

왜 DSA인가?



DSA를 배우는 주요 모토는 최적화된 코드를 작성하는 방법을 아는 것입니다. 이 Cloud Functions 시대에 최적화된 코드는 서버에서 사용되는 계산 및 메모리가 적기 때문에 비용이 적게 듭니다. 반면에 최적화된 코드를 작성하지 않으면 더 많은 비용을 지불해야 하고 클라우드 서버의 결과도 매우 느립니다.

심사 코드



이제 최적화된 코드를 작성하면 시간이 절약된다는 것을 알게 되었습니다. 그러나 코드가 최적화되었는지 여부를 어떻게 판단합니까?
많은 사람들은 줄 수가 적을수록 코드가 최적화된다는 것을 의미합니다. 그러나 이것은 진정한 거짓말입니다. 최적화된 코드는 줄 수로 판단할 수 없고 코드에 포함된 매개변수로 판단할 수 있습니다. 이 사건을 판단하십시오:

문제 설명: 1에서 n까지 일련의 숫자를 생성하고 나중에 액세스할 수 있도록 변수 또는 함수에 저장

코드 1:

def gen_series():
    a = []
    n = int(input("What's n? "))
    for i in range(1, n+1):
        a.append(i)
    return a

def print_series():
    a = gen_series()
    for i in a:
        print(i)

if __name__ == "__main__":
    print_series()


코드 2:

def gen_series():
    n = int(input("What's n? "))
    a = series(n)
    print(a)
    return a

def print_series():
    a = gen_series()
    for i in a:
        print(i)

def series(n):
    d = 11
    for i in range(1, n+1):
        yield i + d
        d += 11

if __name__ == "__main__":
    print_series()


라인 수를 세어보면 Code 1이 더 최적화되어 있다고 하겠지만 과연 그럴까요?

두 경우 모두 시리즈가 생성되어 gen_series() 라는 함수 내에 저장됩니다. 파이썬의 sys.getsizeof() 메소드에 대해 알고 있다면 변수, function 내부에서 사용되는 메모리를 제공한다는 것을 알 수 있습니다. 코드 편집기에서 이것을 작성하는 경우 프로그램을 실행하고 What's n?의 입력으로 200을 입력하십시오.

import sys


def gen_series():
    a = []
    n = int(input("What's n? "))
    for i in range(1, n+1):
        a.append(i)
    return a


def print_series():
    a = gen_series()
    for i in a:
        print(i)


if __name__ == "__main__":
    print(sys.getsizeof(gen_series()))


바이트 단위로 사용된 메모리를 얻을 수 있습니다. 그리고 놀랍게도 두 번째 코드가 더 적은 메모리를 사용한다는 것을 알게 될 것입니다.

따라서 적은 코드가 항상 최적화된 코드를 의미하지는 않는다는 결론에 도달할 수 있습니다. 코드를 판단하려면 매개변수가 중요합니다.

프로그래밍 언어



DSA는 대부분 프로그래밍 언어와 독립적이며 중요한 것은 개념입니다. DSA에 관한 다음 기사에서 Python을 사용하겠습니다.

좋은 웹페이지 즐겨찾기