[알고리즘 전략] python 기본 자료구조 정리
·
알고리즘
** [한권으로 합격하는 취업 코딩테스트] 책을 참고해 작성했습니다.** 주의점, 기억해야할 것을 위주로 작성합니다.  배열- 선언 시 주의점 a1 = [[0] * 5] * 3a1[1][1] = 99 # [1][1] 외에 다른 곳의 값도 99로 출력됨. a2 = [[0] * 5 for _ in range(3)]a2[1][1] = 99 # [1][1] 만 변경됨. - 삽입/삭제는 적고 조회가 잦다 => 배열 - 삽입/삭제가 많고 조회가 적다 => 연결리스트 ** 대표문제 - 요세푸스 문제 0  스택/큐  스택 - LIFO Last Input First Output - 삽입/삭제: O(N)- 배열 사용, append(), pop() - 스택 활용 문제: 입력을 순차적으로 살펴보면서 각각의 데이터를 스택에 언..
트리 - 스레드 이진 트리
·
자료구조
# [C언어로 쉽게 풀어쓴 자료구조(천인국)]를 공부하고 주요 내용을 정리하고자 작성하는 글입니다.# 해당 게시글에 대한 모든 피드백 환영합니다. // 해당 단원인 '트리'의 목차가 업데이트 될 예정입니다.이전 글: 트리 - 이진 트리의 노드 개수/ 단말 노드 개수/ 높이 구하기 스레드 이진 트리 Threaded Binary Tree스레드 이진 트리가 무엇인지 알기 전에 왜 '스레드 이진트리'가 나오게 되었는지 먼저 생각해보자. 전위/중위/후위/레벨 순회 등 이진트리를 순회할 때 NULL 링크를 만나면 왼쪽 또는 오른쪽 자식 노드가 없음으로 이해해왔다. 즉 NULL 링크(또는 포인터) 는 자식노드의 유무를 알려주는 유일한 도구이다.  그런데, 이러한 NULL 포인터가 이진트리 내에 몇 개가 존재하는지 따..
트리 - 이진 트리의 노드 개수/ 단말 노드 개수/ 높이 구하기
·
자료구조
# [C언어로 쉽게 풀어쓴 자료구조(천인국)]를 공부하고 주요 내용을 정리하고자 작성하는 글입니다. # 해당 게시글에 대한 모든 피드백 환영합니다. // 해당 단원인 '트리'의 목차가 업데이트 될 예정입니다. 이전글: 수식트리(후위표기수식) 이진트리의 노드 개수 구하기 이진트리에서 전체 노드의 개수를 세기 위해서는 모든 노드들을 한 번씩 방문해야 한다. 즉, 노드의 개수를 셀 때도 순회 알고리즘이 사용된다. 그렇다면, 어떤 순회 알고리즘을 사용하는 것이 가장 적합할까? 어떤 노드를 루트로 하는 이진트리의 노드의 개수는, 왼쪽 서브트리의 노드 개수와 오른쪽 서브트리의 노드 개수에 루트 노드의 수 1 을 더해주면 된다. 즉 왼쪽 서브트리 -> 오른쪽 서브트리 -> 루트 노드 순으로 방문하여 셈하는 알고리즘은..
트리 - 수식 트리(후위 표기 수식)
·
자료구조
# [C언어로 쉽게 풀어쓴 자료구조(천인국)]를 공부하고 주요 내용을 정리하고자 작성하는 글입니다. # 해당 게시글에 대한 모든 피드백 환영합니다. // 해당 단원인 '트리'의 목차가 업데이트 될 예정입니다. 이전 글: 트리 - 레벨 순회알고리즘 수식트리 Expression Tree 흔히 우리가 알고 있는 수식을 트리로 표현한 것이다. 수식은 산술연산자와 피연산자로 구성된다. 산술연산자는 트리의 비단말 노드가, 피연산자는 트리의 단말 노드가 되는데, 아래의 예를 보면 이해할 수 있다. 그렇다면, 이러한 수식 트리를 읽어들여서 연산할 수 있어야 한다. 이때 사용되는 것이 스택과 순회 알고리즘이다. 전위, 중위, 후위 순회 알고리즘 중 어느 것을 사용하는가에 따라 읽어들인 수식의 형태가 다른데, 아래의 표를..
트리 - 레벨 순회 알고리즘
·
자료구조
# [C언어로 쉽게 풀어쓴 자료구조(천인국)]를 공부하고 주요 내용을 정리하고자 작성하는 글입니다. # 해당 게시글에 대한 모든 피드백 환영합니다. 이전 글: 트리 - 반복적 순회(스택으로 이해하기) 레벨 순회 level order 각 노드를 레벨 순으로 검사하는 순회 방법이다. 루트 노드의 레벨이 1이고, 아래로 내려갈수록 레벨은 증가한다. 동일한 레벨의 경우에는 좌->우로 방문한다. 레벨 순회에 적합한 자료구조는 큐 Queue 이다. 큐를 이용해서 레벨 순회를 진행하면 다음과 같다. 트리의 루트 노드를 우선 삽입한다. 그 다음부터는 큐가 공백 상태가 될 때까지 아래의 과정을 반복한다. 큐에서 dequeue를 한 다음, 삭제된 노드의 왼쪽 서브트리의 루트노드와 오른쪽 서브트리의 루트노드를 순서대로 큐에..
트리 - 반복적 순회(전위/중위/후위 순회 스택으로 이해하기)
·
자료구조
# [C언어로 쉽게 풀어쓴 자료구조(천인국)]를 공부하고 주요 내용을 정리하고자 작성하는 글입니다. # 해당 게시글에 대한 모든 피드백 환영합니다. 이전 글: 트리-이진트리 순회 반복적 순회 스택 stack 자료구조와 for문을 이용해 트리를 순회하는 방식이다. 이전까지는 순환 호출을 이용해 순회를 했다면 반복적 순회는 for문과 스택을 이용한다. 전위/중위/후위 순회 모두 반복적 순회를 이용해 구현할 수 있다. 이전 글에서 예시로 들었던 아래의 트리를 이용해 전위/중위/후위 반복적 순회를 모두 살펴보자. 스택 그림만으로 방문 순서 알아내기 *pseudo-code: 프로그래밍 언어는 아니지만 유사한 모양으로 알고리즘의 원리를 설명할때 사용가능 1. 전위 순회 // Pseudo Code preorder_i..