분류 전체보기128 합병 정렬(Merge Sort) [Python / 파이썬] -목차- 1. 합병 정렬(Merge Sort) 2. 합병 정렬의 시간 복잡도 3. 합병 정렬의 특성 1. 합병 정렬(Merge Sort) 합병 정렬 또는 병합 정렬(merge sort)은 O(n log n) 비교 기반 정렬 알고리즘이다. 일반적인 방법으로 구현했을 때 이 정렬은 안정 정렬에 속하며, 분할 정복 알고리즘의 하나이다. 합병 정렬은 아래와 같은 알고리즘으로 동작한다. 배열을 원소가 하나밖에 남지 않을 때까지 계속 둘로 쪼갠다. 더 이상 쪼갤 수 없는 각각의 배열을 합병하며 정렬한다 이때 크기 순으로 재배열하며 힙병이 이루어진다. 이해를 돕기 위해 예제를 통해 자세한 동작 원리를 알아보자. 예를 들어, 아래와 같이 1부터 8까지 총 8개의 숫자가 들어있는 배열에 있다고 가정해보자. [6, 5, .. 2022. 2. 17. Duck Typing 1. Ducl Typing 이란? Duck typing이란 특히 동적 타입을 가지는 프로그래밍 언어에서 많이 사용되는 개념으로, 객체의 실제 타입보다는 객체의 변수와 메소드가 그 객체의 적합성을 결정하는 것을 의미한다. Duck typing이라는 용어는 흔히 duck test라고 불리는 한 구절에서 유래됐다. If it walks like a duck and it quacks like a duck, then it must be a duck. 만일 그 새가 오리처럼 걷고, 오리처럼 꽥꽥거린다면 그 새는 오리일 것이다. 동적 타입 언어인 파이썬은 메소드 호출이나 변수 접근시 타입 검사를 하지 않으므로 duck typing을 넒은 범위에서 활용할 수 있다. 다음은 간단한 duck typing의 예시다. cla.. 2022. 2. 17. property (함수/데코레이터)[파이썬/python] -목차- 1. 필드명 2. Getter/Setter 3. Property() 함수 4. @Property 데코레이터 5. @Property 데코레이터 활용 1. 필드명 사람의 이름, 성, 나이 데이터를 담기 위한 간단한 클래스를 하나 작성해보자. 아래 Person 클래스는 이름 first_name, last_name, age 이렇게 3개의 필드로 이루어져 있다. class Person: def __init__(self, first_name, last_name, age): self.first_name = first_name self.last_name = last_name self.age = age Person 클래스의 인스턴스를 생성 후에, 현재 필드 값을 읽거나 새로운 필드 값 쓰는 것은 매우 자유롭다... 2022. 2. 17. 메모리 누수[파이썬/python] 흔히 파이썬과 C와의 차이점을 묻는 질문이 많은데, 이런 저런 답 중에서 “파이썬은 메모리 관리가 필요없다”는 것도 있다. 파이썬에서 실행시간에 생성된 객체는 자동으로 관리되어 “더 이상 쓸모가 없어지면” 자동으로 파괴된다. 따라서 파이썬에서는 명시적으로 객체를 파괴하는 코드를 작성하지 않는 것이 보통이다. 파이썬의 이러한 특성 때문에 파이썬의 메모리 관리는 가비지 콜렉터에 의해서 관리된다는 믿음이 있는데, 이것도 (어느 정도 예전에는 사실이었으나) 진짜는 아니다. 파이썬은 Objective-C와 비슷하게 참조수(Reference Count)기반의 자동 메모리 관리 모델을 따르고 있다. 파이썬의 모든 변수는 값을 담는 영역이 아니라 객체에 바인딩 되는 이름이다. 객체와 이름이 바인딩되면, 해당 객체는 그.. 2022. 2. 17. 이전 1 ··· 13 14 15 16 17 18 19 ··· 32 다음