본문 바로가기

728x90

분류 전체보기

(104)
[자료구조] 연결 리스트-1 자료구조의 리스트는 순차리스트(배열)과 연결리스트(Linked List)로 나뉜다. 연결리스트는 순차리스트와 달리 삽입/삭제 등 변화에 더욱 편리한 자료구조인데, 이러한 강점은 연결리스트의 각 요소가 어떻게 구성되는지 알면 이해가 된다. 연결리스트의 각 요소를 Node(이하 노드)라고 하는데, 노드는 정보를 담는 데이터와 연결된 다른 노드의 주소(포인터)를 담는다. 그림으로 표현한다면 아래와 같다. Data와 Next Address를 묶어서 하나의 노드라고 한다. Next Address는 위에서 말한 다음 노드의 주소를 담고있다. 언어에 따라서 NextAddress에 타입은 적절한 형태로 바뀔 수 있겠지만 보통의 경우 NextAddress에 할당되는것은 다음으로 연결되어야 할 노드의 주소가 된다. 노드 ..
Closure와 객체의 생명주기의 관계 Closure의 중첩 시 weak은 어디까지 self를 붙잡아(강한 참조) 두는가? 표현할 수 있는 적절한 말이 무엇인지는 잘 모르겠다. Swift의 closure를 사용할 때 Capturing이 되면서 self(객체)의 강한 참조가 발생한다. 이때 강한 참조 인해 발생하는 문제들을 피하기 위해 weak을 사용하여 약한 참조 형태로 self에 접근하는 것이 일반적인 방법이다. 그렇다면 중첩된 closure는 weak의 위치에 따라 어떻게 동작할까? 만약 아래와 같은 코드를 작성했을 때 weak이 사용되는 위치에 따라 어떤 결과가 나오는지 확인해보려 한다. Case 1. escaping Closure를 받는 메서드를 호출했을 때 위치 1을 보면 loadContentFromSource를 호출하는 첫 번째 클..
[자료구조] 배열 데이터를 빈틈없이 나열한 자료구조를 배열(순차리스트)이라고 한다. 배열은 일직성으로 쭈욱 나열된 1차원 배열, 1차원 배열의 각 데이터(요소)에 1차원 배열을 하나 더 붙인 모양의 2차원 배열 입체적인 사각면체로 가로, 세로, 높이에 빈틈없이 데이터를 나열한 3차원 배열 등이 있다. 출처 : https://programfrall.tistory.com/52 데이터를 물리적 주소에 순차적으로 저장하고 인덱스를 갖고 있기 때문에 배열내 각 요소에 바로 접근이 가능하다. 그러므로 데이터 접근이 매우 빠르다는 장점이 있다. 배열은 언어마다 조금씩 메모리에 저장되는 방식이 다르다고는 하지만, 일반적으로 아래와 같은 그림으로 표현한다. 배열의 첫요소 a[0] 의 주소를 알고 있다면 그 뒤로 붙는 연속된 요소들을 알 ..
자료 구조란? 자료구조(DataStructure) 란, 사전적 의미로는 CS(ComputerSience)에서 데이터의 접근 및 수정을 효율적으로 하기 위한 조직/체계 를 의미한다고 한다. 많은 양의 데이터를 관리할 때 그 안에서 공통된 규칙이나 패턴을 찾아 체계적인 메커니즘이 잡혀 있어야 한다. 조금은 추상적일 수 있는 말이지만 예시를 보고 이해해보자. 현실에서의 자료구조 대표적인 현실 자료구조로는 학생들을 관리하는 학교에서 찾아 볼 수 있다. 학교는 수십명에서 수백명에 이르기까지 수많은 학생들을 관리하고 있다. 이때 '홍길동' 이라는 학생을 무작위로 나열된 학생명단에서 찾으려 한다면 매우 어려울게 분명하다. 예를 들어 학생이 1000명의 학교의 무작위로 나열된 학생 명단에서 찾는다고 했을때 최소 1회, 최악의 경우 ..

728x90