본문 바로가기

분류 전체보기

(213)
[Leetcode]_27. Remove Element 문제 [https://leetcode.com/problems/remove-element/description/?envType=study-plan-v2&envId=top-interview-150] [LeetCode - The World's Leading Online Programming Learning Platform Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com](https://leetcode.com/problems/remove-element/description/?en..
[좌충우돌, 파이썬으로 자료구조 구현하기] 이진트리 표현하기 (연결리스트) class Node: def __init__(self,data): self.data = data self.left = None self.right = None class Tree: def __init__(self,node=None): self.root = node if __name__ == '__main__': tree = Tree(Node("A")) tree.root.left = Node("B") tree.root.right = Node("C") tree.root.left.left = Node("D") tree.root.left.right = Node("E") tree.root.right.left = Node("F") tree.root.left.left.left = Node('G&..
[Leetcode]_88. Merge Sorted Array (Two Pointer) 문제 https://leetcode.com/problems/merge-sorted-array/description/?envType=study-plan-v2&envId=top-interview-150 LeetCode - The World's Leading Online Programming Learning Platform Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 어떻게 풀어야 할지 갈피를 못잡겠어서 해설을 보면서 이해해보려고 했다. 사람들이 투포인터(Two Pointer) 문..
[좌충우돌, 파이썬으로 자료구조 구현하기] 순회 함수 만들기 (스택) 스택을 이용한 전위 순회 기본 원리는 재귀함수를 호출하는 코드 대신 방문할 노드를 스택에 저장하는 코드로 바꾸고, 스택이 빌 때까지 반복문으로 순회하는 것이다. 결과를 담을 빈 리스트와 스택 리스트에 루트 인덱스인 0으로 초기화한다. 빈 스택이 아니면 계속 반복한다. 스택에서 인덱스 꺼내 parent에 대입 현재 인덱스의 노드를 방문(리스트에 추가)한다. 왼쪽과 오른쪽 노드의 인덱스를 구한다. 각 노드의 인덱스가 배열의 크기보다 작고, 노드의 값이 None이 아니면 스택에 추가한다. 스택은 마지막 원소를 먼저 꺼내므로, 오른쪽ㅈ 보다 왼쪽을 먼저 방문하려면 오른쪽 노드의 인덱스를 먼저 넣어야 한다. 결과 리스트 반환 def preOrderByStack(tree): if not tree: return []..
[좌충우돌, 파이썬으로 자료구조 구현하기] 순회 함수 만들기 (재귀) 재귀함수를 사용하여 전위 순회, 중위 순회, 후위 순회를 구현해보자. 전위 순회 함수 만들기 현재 노드 방문 -> 왼쪽 노드 방문 -> 오른쪽 노드 방문 위 순서를 재귀적으로 진행하면 된다. def preOrder(tree,i=0): if i >> tree = ["A", "B", "C", "D", "E..
[좌충우돌, 파이썬으로 자료구조 구현하기] 이진트리 표현하기 (배열) 파이썬으로 이진트리를 표현하는 방법에는 배열로 이용하는 것과 연결 리스트를 이용하는 것이 있다. 트리의 값을 레벨 순서대로 배열에 넣어보면 다음과 같다. 인덱스 0 1 2 3 4 5 6 7 값 A B C D E F None G 루트 A의 인덱스는 0 A의 왼쪽 자식인 B의 인덱스: 2 * 0 + 1 = 1 A의 오른쪽 자식인 C의 인덱스: 2 * 0 + 2 = 2 B의 인덱스는 1 B의 왼쪽 자식인 D의 인덱스: 2 * 1 + 1 = 3 B의 오른쪽 자식인 E의 인덱스: 2 * 1 + 2 = 4 C의 인덱스는 2 C의 왼쪽 자식인 F의 인덱스: 2 * 2 + 1 = 5 D의 인덱스는 3 D의 왼쪽 자식인 G의 인덱스: 2 * 3 + 1 = 7 부모 노드의 인덱스가 n일 때, 왼쪽 자식 노드의 인덱스는 2..
[좌충우돌, 파이썬으로 자료구조 구현하기] 트리 구현하기 트리는 족보의 가계도나 조직도, 마인드맵을 생각하자. 어려운 말로는 그래프(Graph)의 한 형태로서, 순환(cycle)이 없는 연결 그래프라 한다. 구성 노드(Node): 트리를 구성하는 기본 요소, 값(key or data)과 하위 노드를 가리키는 포인터(pointer)를 가진다. 간선(Edge): 노드와 노드를 연결한 선(Link) 위 그림처럼 트리는 루트(Root)에서 시작한다. 루트: 부모 노드가 없는 최상위 노드 부모(parent)노드: 자식(child) 노드를 가진 노드 자식(child)노드: 부모 노드의 하위 노드 형제(siblings)노드: 부모가 같은 노드 리프(leaf)노드: 자식이 없는 노드 서브 트리(sub tree): 특정 노드를 루트로 생각할 때 생기는 트리 기타 용어 크기(s..
[좌충우돌, 파이썬으로 자료구조 구현하기] 영어 끝말 잇기 문제 1부터 n까지 번호가 붙어있는 n명의 사람이 영어 끝말잇기를 하고 있습니다. 사람의 수 n과 사람들이 순서대로 말한 단어 words 가 매개변수로 주어질 때, 가장 먼저 탈락하는 사람의 번호와 그 사람이 자신의 몇 번째 차례에 탈락하는지를 구해서 return 하도록 solution 함수를 완성해 주세요. 예시 n = 3, words = ["tank", "kick", "know", "wheel", "land", "dream", "mother", "robot", "tank"] result = [3, 3] n = 5, words = ["hello", "observe", "effect", "take", "either", "recognize", "encourage", "ensure", "establish",..