CS/자료구조 4

프로그래머스 인공지능 데브코스 3기 1주차 Day3(1)

이진 트리의 한 종류로 이진 탐색 트리(Binary Search Tree)의 insert() 메서드를 구현한 시점에서 순회(Traversal)중 깊이 우선 순회(depth first traversal)을 확인해보겠다. 이진 트리의 깊이 우선 순회(depth first traversal)에는 세 종류가 있다. 1. 전위 순회(pre-order traversal) 2. 중위 순회(in-order traversal) 3. 후위 순회(post-order traversal) 루트 노드를 방문하는 순서에 따라서 나눠진다. 강의에서 다룬 형태와는 다른 이진 트리를 만들어 보았다. 그림에서 보이는 숫자는 해당 노드의 data를 의미하고 알파벳은 key를 의미한다. insert를 하는 과정에서 노드의 data를 기준으로..

CS/자료구조 2021.12.10

프로그래머스 인공지능 데브코스 3기 1주차 Day2(1)

1. 큐를 배열과 연결 리스트로 구현 했을 때, 각 경우의 시간 복잡도 비교 연산 배열 연결 리스트 size() O(1) O(1) isEmpty() O(1) O(1) enqueue() O(1) O(1) dequeue() O(n) O(1) peek() O(1) O(1) size() 가 O(1)인 이유는 추상적 자료구조상에서 'nodeCount'라는 변수를 가지고 있기 때문에 상수시간이다. 같은 이유로 isEmpty()도 상수시간이다. 배열로 구현한 큐에서 enqueue을 한다는 것은 끝에 삽입이 되는 것이고, 연결 리스트로 구현한 큐에서 enqueue는 tail의 next에 삽입이 되는 상황이다. 때문에 두 개의 구현 방식 모두 enqueue가 될 때에는 O(1) 즉, 상수 시간에 이뤄진다. 배열로 구현한..

CS/자료구조 2021.12.09

프로그래머스 인공지능 데브코스 3기 1주차 Day1(1)

1. del과 pop의 차이점은 무엇일까? del의 경우 제거된 요소가 반환되지 않는다. 또한, del은 슬라이싱으로 여러 값을 삭제할 수 있다. pop은 제거된 요소가 반환된다. 값을 제거하는 방법 중에서 remove라는 것도 있다. remove는 index로 접근하지 않고 첫 번째로 일치하는 값을 제거하는 방법이다. 만약 해당하는 값 또는 인덱스가 없을 경우 remove는 ValueError, del과 pop은 IndexError가 발생한다. n개의 요소들중에서 i 번째 요소를 삭제할 때 시간 복잡도는 아래와 같다. del O(n - i) pop O(n - i) remove O(n) 2. list의 index() 메서드의 복잡도 index()함수의 인자값에 해당하는지 비교하면서 선형적으로 순회하기 때..

CS/자료구조 2021.12.08