변수 영역과 클로저
숫자로 이루어진 리스트를 정렬하되 정렬한 리스트의 앞쪽에는 우선순위를 부여한 몇몇 숫자를 위치시켜야 한다고 가정해봅시다. 이러한 경우에는 리스트의 sort 메소드에 key 인자로 도우미 함수를 전달하는 것으로 구현할 수 있고 도우미 함수는 주어진 리스트 원소에 대해 중요한 숫자 그룹에 들어있는지 체크합니다. def sort_priority(values, group): def helper(x): if x in group: return (0, x) return (1, x) values.sort(key=helper) numbers = [8,3,1,2,5,4,7,6] group = {2,3,5,7} sort_priority(numbers, group) print(numbers) 파이썬은 자신이 정의된 영역 밖에..
코딩테스트 문제 (28) - 정렬 리스트 병합하기
문제 여러 개의 정렬된 리스트를 1개의 정렬된 리스트로 병합하는 문제입니다. a = [[1,4,5],[1,3,4],[2,6]] => [1,1,2,3,4,4,5,6] 풀이 이 문제는 우선순위 큐를 사용해 풀 수 있는 문제로 파이썬에서 heapq 모듈을 사용하면 됩니다. 파이썬의 heapq 모듈은 최소힙이 구현된 것으로 리스트 원소를 heappush 메소드로 넣고 heappop 메소드로 리스트를 추출할때 이미 정렬되어 있으므로 맨 앞의 원소를 뽑아내고 다시 heap 구조에 집어 넣습니다. from heapq import heappush, heappop def solution(ListofList): result = [] heap = [] for i, l in enumerate(ListofList): heapp..