2024-02-06
duplicate remove
일반적으로 set()을 사용한 중복 제거가 더 효율적이다. set()은 해시 테이블을 사용하여 원소의 고유성을 보장하므로 중복된 값을 효율적으로 제거할 수 있다. 반면 딕셔너리는 해시 테이블을 사용하지만 각 항목에 대해 값과 키를 모두 저장하기 때문에 메모리 사용량이 더 크다..
Two pointer
투 포인터 알고리즘은 두 개의 포인터를 사용하여 리스트나 배열을 탐색하거나 조작하는 알고리즘이다. 주로 정렬된 배열이나 리스트에서 합이나 특정 조건을 만족하는 부분을 찾을 때 사용한다.
list vs deque()
list는 동적 배열로 구현 => 리스트의 끝부분에 추가하는 경우 O(1), 하지만 처음부분에 추가하는 경우 O(n)의 시간복잡도를 가짐.
deque()는 끝, 처음부분 다 O(1)만큼의 시간복잡도를 가진다.
다만 list는 인덱싱, 슬라이싱에 효율적이므로, list의 크기가 자주 변하지 않을경우, list의 끝에서만 삽입과 삭제가 이루어지는 경우 list를 사용하면 효율적일 것이다.
list comprehension vs copy
list = [[0,0] *9]
list[0] = [0,1]
list [[0,0] for _ in range(9)]
위의 케이스는 동일한 객체를 참조하여 9번 반복하는 형태로 만든 것이기에 내부 리스트를 수정할 경우 전체에 그 변경사항이 반영됨.
BFS + heap = Dijkstra
그래프나 트리와 같은 자료 구조에서 루트 노드로부터 시작하여 인접한 모든 노드를 먼저 탐색하는 알고리즘이다.
큐를 사용하면서 구현되며 탐색가능한 지점이 없을때까지 모든 노드를 방문한다.
라는 정의에서 큐를 priorityque로 바꿔준다면 우리가 알고 있는 다익스트라 알고리즘이 된다고 한다.
python의 ord() = 유니코드 숫자를 반환
한글 유니코드 규칙 => 초성:중성:종성 을 가진 시계와 동일하다.
그러면 한글을 숫자로 치환하는 치환기를 만들어줄 수 있다.
이러한 방식으로 한글 자연어 전처리를 쉽게 할수 있을꺼 같다. 아마 이러한 방식으로 기존 데이터를 변환하여 모델을 훈련시키는 것 아닐까?