본문 바로가기

CS17

[자료구조] Circularly Linked List 2호선 내선순환선처럼, 'Circularly' 라는 표현 그대로 element들이 시작과 끝 지점이 없이 서로가 서로에게 연결되어 있는 자료구조이다. 즉, tail.next = head이다. 게임개발을 하면서, 오브젝트 풀링을 통해 생성해 둔 오브젝트들을 게임이 진행됨에 따라서 꾸준히 스폰해 줘야 할 일이 있었는데, 나는 이 때 array+index 를 활용했다. 즉 간략하게 쓰자면 void LocateObstacles(Vector3 targetPos) { _obstaclesArr[_obstacleIdx].SetActive(true); _obstacleArr[_obstacleIdx].transform.position = targetPos; _obstacleIdx++; if(_obstacleIdx>=_ob.. 2023. 9. 5.
[자료구조] Doubly Linked List *** 개인이 공부한 내용들을 간략하게 정리하고 참고하기 위한 포스팅입니다. 설명에 실수가 있을 수 있습니다. 지적해 주시면 정말 감사하겠습니다. *** Singly Linked List에서는 각 node가 바로 다음 node로의 link만 가지고 있기 때문에, 임의의 node에 선행하는 노드를 파악할 수 없었다. 이로 인해 임의의 중간 지점 혹은 맨 끝에 있는 node를 삭제하려 할 때 필연적으로 비효율이 발생하였다. Doubly Linked List는 각 node가 (이전 node로의 link, 값, 다음 node로의 link)로 이루어져 있으며, 맨 앞과 뒤에 각각 header, trailer라는 dummy node가 덧붙여져 있다.(sentinel, guard라고도 한다.) 이러한 구조로 인해 임.. 2023. 9. 4.
[자료구조] Singly Linked List *** 개인이 공부한 내용들을 간략하게 정리하고 참고하기 위한 포스팅입니다. 설명에 실수가 있을 수 있습니다. 지적해 주시면 정말 감사하겠습니다. *** Array의 단점 1. 고정된 길이를 가지고 있는 자료구조이기 때문에, 동적으로 resizing할 일이 생길 수 있다. 이 경우 새로운 array를 만들고 > element들을 복사하고 > 새로 생성한 array로 reference를 재설정해 줘야 하기 때문에 비효율적이다. 2. 앞 쪽 index에 새로운 값을 추가하려는 경우, 그 뒷쪽 값들을 전부 다 한 칸씩 밀어 줘야 하기 때문에 비효율적이다. 예를 들어 1, 2, 3, 4, 5가 저장된 array가 있고 0th index에 6을 저장하려는 경우, {6,1,2,3,4,5}를 만들기 위해 1,2,3,.. 2023. 7. 29.
[자료구조] 배열(Array) *** 개인이 공부한 내용들을 간략하게 정리하고 참고하기 위한 포스팅입니다. 설명에 실수가 있을 수 있습니다. 지적해 주시면 정말 감사하겠습니다. *** 정의 : 연속된 정수로 인덱싱된 같은 type의 원소들의 집합. 1. Add 1-1) sorted array : 순서를 유지하기 위해 shifting을 통해 공간을 만들어야 하므로, time complexity는 O(n)이다. 1-2) unsorted array: array의 끝에 원소를 더하면 되므로 time Complexity는 O(1)이다. 2. Remove 1-1) sorted array: shifting을 통해 삭제된 공간을 메워 줘야 하므로, time Complexity는 O(n)이다. 1-2) (삭제할 index가 주어졌다는 가정 하에) 삭.. 2023. 7. 26.