문자열 : 불변객체튜플 : 불변객체리스트 : 가변바이트 배열바이트 : 가변객체리스트 깊은 복사 법튜플 깊은 복사slayers.discard("버피")print(slayers)print(people)hello = "asdf"hello1 = "asdfadsf"print(h
간단하게 파이썬으로 구현했다.스택 리스트를 두 개 만들어서 하나는 입력할 때 쓰는 스택, 하나는 queue에서 dequeue 할 때 사용하는 스택이다.스택이든 큐든 push 할 때는 순서대로 들어가니 들어갈 때는 스택과 같다.하지만 pop 할 때는 스택과 큐가 방식이
내가 읽고 있는 책은 왼쪽 노드와 오른쪽 노드의 인덱스를 구하는데 비트연산자를 이용했지만, 개인적으로 이런 방식이 처음 힙을 접하는 사람에게 효과적인 접근방식이 아니라 생각이 들어, 다른 방식으로 인덱스를 구했다.먼저 힙은 기본적으로 최대값이나 최소값을 빠르게 구하
어제는 힙 자료구조를 구현했었다. 오늘은 이를 이용해 우선순위 큐를 구현하는데, 우선순위 큐는 힙을 이용하면 간단하게 구현이 가능하다.우선 힙은 완전이진트리의 형태를 갖는 비선형 자료구조이고 큐는 FIFO(first in first out) 의 기능을 하는 선형자료구조
hashTable 은 { key : value } 로 구성되고 hash 기법을 이용해 데이터의 저장, 조회, 삭제의 속도를 높히는 자료구조이다. 즉 추상 데이터 구조라고 할 수 있다. (자바에는 hashTable 클래스가 존재하지만, 해시테이블은 일반적으로 자바의 ha
컴퓨터에서 여러 자료들을 조직적, 체계적으로 저장하는 방법요인에 따라 상황마다 보다 효율적인 자료구조가 존재한다데이터에 접근하는 빈도데이터에 접근하는 방법시간복잡도공간복잡도효율성은 주로 시간복잡도를 의미한다. 시간이 더 귀중한 자원보통 효율성을 얘기할 때는 하드웨어 최
배열 여러 자료들을 메모리 덩어리 안에 줄지어놓은 구조 각 자료는 색인(INDEX) 로 접근한다.
스택은 사전적 의미가 쌓여 있는 더미를 뜻한다.자료구조 형태도 비슷하다. 층층이 쌓이면 밑을 꺼낼 수 없다. 그래서 위에서부터 꺼내게 된다.때문에 선입 후출의 방식을 가지고, 맨 뒤에서 삽입과 제거가 일어나기 때문에, 삽입과 삭제의 시간복잡도가 O(1) 이다.스택을 검
연결리스트는 기본적인 자료구조이지만 구현하는것이 쉽지 않다.특히 C에서는 이중 포인터를 사용해야 하기 때문에 많이 어려워면접에서도 많이 물어보는 질문이다.이중 포인터를 사용하는 것이 핵심이다. 이중포인터를 왜 사용해야 하는가는 https://chanywa.co
트리 구조는 구현하기 힘들지만 이진탐색 알고리즘이나 힙을 통한 우선순위 큐 등 다양한 분야로 응용 될 수 있다.때문에 한번쯤은 구현을 해보는 게 좋다고 생각했다.삭제하는 부분이 어렵다. 여러가지 케이스가 있기 때문에... 하지만 발생하는 케이스들을 꼼꼼하게 정리해서 분
현실 세계로부터 수집한 사실이나 개념의 값 또는 이들의 집합. 특정 용도로 사용하기 위해 처리/가공한 것을 정보(Information)이라 한다.세상에는 다양한 데이터가 존재하고 산발적으로 퍼져있다. 해당 데이터를 모아 정리하여 사람이 받아들이기 쉽게 추상적으로 정리한
추상자료형 면접 준비를 할 동안 이해가 잘 안되는 개념이였는데, 깔끔하게 이해했다. 정의 '값'과 '연산'의 집합으로 정의되는 논리적 행동을 가지는 오브젝트 클래스 추상자료형은 "모델" 이다. 즉 실체가 없다. 나는 오브젝트 클래스라 해서 객체 클래스면 이미 실체
배열 배열이란 배열은 메모리 덩어리이다. 메모리 공간을 반드시 연속적으로 차지해, 인덱스를 통해 접근할 수 있는 자료구조를 의미한다. 하나의 변수에 여러 자료를 저장할 수 있고, 반복문을 통해 효과적으로 데이터 처리가 가능하다. 배열의 특징 크기(Element의 개수
기본적으로 양방향 리스트를 구현할 때는 단방향 리스트의 단점을 커버할 수 있는 방식으로 구현해야 한다고 생각한다. 특히 append의 경우 처음부터 끝까지 무조건 n번 이동을 해주어야 되기 때문에 비효율적인 탐색이 있는데, 양방향 리스트에서는 이 부분을 해결할 수 있다
트리는 노드의 연결형태가 재귀적으로 구현되는 추상데이터타입이다. 하나의 노드에서 다른 노드로 이동하는 경로는 유일부모 노드에서 자식 노드로 가는 길이 여러개가 존재할 수 있지 않느냐 할 수 있는데, 특정 a라는 노드에서 b라는 지정된 노드로 이동할 때 갈 수 있는 경로
이진 탐색 트리 이진 탐색을 위해 만들어지는 트리여서 이진 탐색 트리라고 부른다. 반드시 부모 노드의 오른쪽에는 부모 노드의 값보다 큰 값이 위치하고, 왼쪽에는 부모 노드보다 작은 값이 위치하게 된다. 이진 탐색 트리의 특징
객체 간에 짝을 이루는 구조를 나타내기 위한 가장 유연한 자료구조vertex : (node, point) 각 객체를 나타내는 단어. edge : 각 vertex를 잇는 간선을 의미. 이 edge 는 vertex single로도 연결되고 두 vertex에 여러 edge가
지금 정리하려는 힙은 메모리에서의 힙이 아니라, 자료구조 힙이다. OS에 힙 메모리 공간을 만들어낸 사람이나, 스택 메모리를 만든 사람이나 싸이코 같다. 스택은 그 활용에 있어 매우 유사한 부분이 있어, 이해는 되지만, 힙은 대체 메모리 힙과 자료구조 힙이 1도 연관이