Skip to content

Page 1

eval()

  • 메소드에 전달된 표현식을 코드로 실행
  • ⚠ 사용자가 값을 입력하도록 허용하면, os.system('rm -rf *)을 입력할지도 모릅니다
    number = 9
    print(eval("number * number")) # 81
    

최대공약수 Greatest Common Divisor - 유클리드 호제법

  • 소인수분해 후 겹치는 소수끼리 곱 (차수 빼고)
  • 두 양의 정수 a,b(a>b)에 대하여 a = bq + r (0≤r<b) 이라 하면 a,b의 최대공약수는 b,r의 최대공약수와 같다.
    즉, gcd(a,b) = gcd(b,r) 이고, r=0이라면 a,b의 최대 공약수는 b가 된다
    def euclidean(a,b): # 0 < a < b
        r = b % a
        if r == 0:
            return a
        else:
            euclidean(r, a)
    

최소공배수 Least Common Multiple

  • 소인수분해 후 소수끼리 곱 (차수까지)
  • 공식 $$ lcm(a,b) 최소공배수 = |ab|/gcd(a,b)최대공약수 $$

pop() vs del()

  • pop()
    리스트의 마지막 요소를 삭제하고, 해당 값을 반환하는 Method
    리스트의 길이가 짧아지고, 메모리에서 이전 마지막 요소의 메모리도 해제된다
  • del()
    원본 리스트에서 해당 요소가 완전히 삭제되어 메모리에서도 해제되지만, 원본 리스트의크기는 줄어들지 않는다

-> 만약, 리스트가 아주 크다면 del이 더 효율적일 수 있다. pop()은 리스트의 길이가 감소하기에 연속으로 호출할 시 리스트의 크기를 조절하기 위한 메모리 재할당이 자주 발생할 수 있다.
⭐ pop을 사용하면 리스트의 크기가 줄어들면서 메모리 효율이 개선될 수 있음도 명심

-> 만약, 삭제하려는 요소의 위치가 항상 리스트의 끝이라면 pop()
특정 위치의 요소를 삭제한다면 del

-> 삭제된 요소의 반환이 필요하다면 pop


Quote

  • namuwiki
  • openai