[python] 우선순위 큐 PriorityQueue VS heapq
·
python
⭐️ 1. 우선순위 큐?우선순위가 높은 데이터가 먼저 나가는 (제일 위에 놓임) 큐즉, 제일 첫번째 원소가 제일 우선순위가 높은 것 구현 방식- Heap, List, ... 등 구현 방식이 있다. 시간복잡도에 차이가 존재한다.List의 경우삽입: O(1), 삭제: O(N) Heap의 경우삽입: O(logN), 삭제:O(logN) ✅ 사용 예시- 스케줄링, 사건 시뮬레이션, 우선순위에 따른 검색, 정렬 등 ✅ 규칙 (최소 힙 기준)부모가 두 자식보다 더 작은 수임이 보장된다. (부모가 min)완전 이진 트리를 만족한다. ✅ 동작 (회소 힙 기준)추가 (push) 동작- 맨 마지막 원소로 추가한다- 해당 위치에서 root까지 순회하며, min heap을 만족하는지 체크한다 시간복잡도: O(logN)   삭제..
[python] list - flatten
·
python
알고리즘 문제를 접하다가, python list 중 3차원 리스트를 2차원 리스트로 변환할 경우가 생겼다 어찌저찌 구현은 했는데, 좀 더 쉬운 방법을 발견해 정리하고자 작성한다. (1) 함수 sum (간단하게 사용 가능) (2) list comprehension [1] 목표 설정 # case 1 [[1], [2, 3]] -> [1, 2, 3] # case 2 [[[(1, 1), (2, 2)], [(3, 3), (4, 4)]]] -> [[(4, 4), (1, 1), (3, 3), (2, 2)]] # case 3 ([1], [2, 3]) -> [1, 2, 3] # case 4 [([(1, 1), (2, 2)], [(3, 3), (4, 4)])] -> [[(4, 4), (1, 1), (3, 3), (2, 2)..
[python] list - 2중, 3중 리스트 생성
·
python
일단 2중, 3중 리스트 생성 시 기억해야 할 점은 1. 리스트는 for _ in range() 구문과 * 구문의 적절한 조합으로 생성 가능하다는 것, - * 사용 시 자동으로 1회 unpacking이 이루어 진다는 것 - for _ in range() 사용 시 자동 unpacking은 없으나, 타입이 generator 객체이므로 list로 형변환 할 것 2. for _ in range() 구문에서 순서 주의할 것 (column -> row 순서 ) 이 두 가지이다. 경우에 따라 나눠, 자세히 알아보자. 1. 2중 리스트 생성 [1] 목표 설정 예를 들어 다음과 같은 row = 3, column = 2인 2중 리스트를 생성한다고 가정하자. 즉, [[0, 0], [0, 0], [0, 0]]인 리스트를 생성..