목록분류 전체보기 (138)
욤미의 개발일지
[Python] Packing & Unpacking a, b = map(int, input().split()) 코딩테스트에서 조건을 입력받을 때 map함수를 이용해 변수 a, b 에 값을 할당해준다. Packing 하나의 변수에 여러 값을 넣는 것 여러개의 객체를 하나의 객체로 합치는 것 a, b, c = [1, 2, 3] d = a, b, c print(d) # (1, 2, 3) Unpacking 패킹되어있는 변수에서 여러 값을 꺼내오는 것 여러개의 객체를 포함하고 있는 하나의 객체를 풀어주는 것 _list = [1, 2, 3, 4, 5] print(*_list) # 1 2 3 4 5
4. 계수 정렬 특정 조건이 부합할 때만 사용할 수 있지만 매우 빠른 정렬 알고리즘 이다. 모든 데이터가 양의 정수일 때, 데이터의 개수가 N 데이터 중 최댓값이 K일 때, 계수 정렬은 최악의 경우에도 수행 시간 O(K+N)을 보장한다. 계수 정렬은 데이터의 크기가 제한되어 있을 때에 한해서 데이터 개수가 많더라도 매우 빠르게 동작하며 원리 또한 간단하다. 다만, 계수 정렬은 '데이터의 크기 범위가 제한되어 정수 형태로 표현할 수 있을 때'만 사용할 수 있다. 계수 정렬이 효과적인 경우 일반적으로 가장 큰 데이터와 가장 작은 데이터의 차이가 1,000,000을 넘지 않을 때 c.f) 0 이상 100 이하인 성적 데이터를 정렬할 때 계수 정렬을 사용할 수 없는 경우 데이터의 값이 무한한 범위를 가질 수 있..
3. 퀵 정렬 기준을 설정하고 큰 수와 작은 수를 교환한 후 리스트를 반으로 나누는 방식으로 동작한다. 정렬 알고리즘 중에서 가장 많이 사용되는 알고리즘이다. 책 에서는 다루지 않지만 퀵 정렬만큼 빠른 알고리즘으로 병합 정렬이 있다. 이 두 알고리즘은 대부분의 프로그래밍 언어에서 정렬 라이브러리의 근간이 되는 알고리즘이기도 하다. 특징 큰 숫자와 작은 숫자를 교환할때, 교환하기 위한 기준을 피벗(Pivot)이라고 한다. 퀵 정렬을 수행하기 전에는 피벗을 어떻게 설정할 것인지 미리 명시해야한다. 피벗을 설정하고 리스트를 분할하는 방법에 따라서 여러 가지 방식으로 퀵 정렬을 구분한다. 여기서는 가장 대표적인 분할 방식인 호어 분할(Hoare Partition)방식을 기준으로 설명한다. 동작 예시 - 호어 분..
2. 삽입 정렬 처리되지 않은 데이터를 하나씩 골라 적절한 위치에 삽입 하는 정렬 알고리즘 선택 정렬에 비해 구현 난이도가 높지만, 일반적으로 더 효율적으로 동작한다. (선택 정렬에 비해 실행 시간 측면에서 더 효율적) 선택 정렬은 현재 데이터 상태와는 상관없이 무조건 모든 원소를 비교하고 위치를 바꾸는 반면, 삽입 정렬은 필요할 때만 위치를 바꾸므로 '데이터가 거의 정렬 되어 있을 때' 훨씬 효율적이다. 특징 특정한 데이터가 적절한 위치에 들어가기 이전에 그 앞까지의 데이터는 이미 정렬되어 있다고 가정한다. 정렬되어 있는 데이터 리스트에서 적절한 위치를 찾은 뒤에, 그 위치에 삽입된다. 두 번째 데이터부터 시작한다. 첫 번째 데이터는 그 자체로 정렬되어 있다고 판단. 동작 예시 초기 데이터: 7 5 9..
1. 선택 정렬 현재 위치에 들어갈 값을 찾아서 바꾸는 정렬 알고리즘 처리되지 않은 데이터 중에서 가장 작은 데이터를 선택해 맨 앞에 있는 데이터와 바꾸는 것을 반복한다. 동작 예시 초기 데이터: 7 5 9 0 3 1 6 2 4 8 [step 1] 처리되지 않은 데이터(1~10) 중 가장 작은 '0'을 선택해 가장 앞에 있는 '7'과 바꾼다. → '0' 정렬 완료 [step 2] 정렬된 데이터를 제외하고 처리되지 않은 데이터(2~10) 중 가장 작은 '1'을 선택해 가장 앞에 있는 '5'와 바꾼다. → '0', '1' 정렬 완료 [step 3] 정렬된 데이터를 제외하고 처리되지 않은 데이터(3~10) 중 가장 작은 '2'를 선택해 가장 앞에 있는 '9'와 바꾼다. → '0', '1', '2' 정렬 완료 ..
CHAPTER 6. 정렬 데이터를 특정한 기준에 따라 순서대로 나열하는 것 일반적으로 문제 상황에 따라서 적절한 알고리즘이 공식처럼 사용된다. ex) 데이터의 개수가 적을 때, 데이터 개수가 많더라도 데이터 범위가 한정적일 때, 이미 정렬되어 있는 경우 등... 사람은 직관적으로 데이터를 파악하고 계산할 수 있지만 컴퓨터는 정렬을 어떻게 수행할지 알고리즘을 구체적으로 명시해야한다. 선택정렬 삽입정렬 합병정렬 퀵정렬 계수정렬 Best Avg Worst Stable In-Place 삽입 정렬(Insertion Sort) N N² N² O O 거품 정렬(Bubble Sort) N² N² N² O O 선택 정렬(Selection Sort) N² N² N² X O 퀵 정렬(Quick Sort) NlogN Nlog..