cassiadev

2중 3중 반복문이 되더라도, 전체 경우의 수가 적을 각이 나오면 상관 없다. 모든 경우의 수를 나열하고 따져야 하는 문제들도 꽤 있기 때문

앞으로도 queue, BFS 등을 종종 써먹게 될 것이다

효과적이고 효율적인 알고리즘 작성을 향해~

--

--

버블정렬, 선택정렬, 삽입정렬의 시간복잡도는 O(N²), 다만 삽입정렬의 경우 작은 루프에서 이미 정렬할 필요가 없을 경우 루프 자체를 돌지 않아도 되는 최선의 상태일 때는O(N)까지 가능

병합정렬의 시간복잡도는 O(Nlog2의N) — n/(2^k)=1 이므로 k = log2의N 만큼의 반복을 N회하니까 그럼

--

--

헤드노드 교체할 때, self.head = new_node 막빠로 해버리면 여태까지의 헤드노드들 전부 없어짐. new_node.next = self.head 한 뒤 self.head = new_node 식으로 해야 됨

Python의 // 연산자: 몫 표시 ex. 9 // 2 = 4

이분 탐색의 시간복잡도는 O(log 2의 N)

재귀함수 문제를 풀 때는 1. 반복하며 축소시키기 2. 예외 탈출구 만들기 에 주의할 것

배열의 길이를 N이라 할 때, 정렬의 시간복잡도는O( Nlog2의N), 집합화의 시간복잡도는 O(N)

함수 외부의 primitive 값을 파라미터로 쓸 때에는 global 변수명 하고 선언해줄 것

--

--