From f3564cd7b932f54de6c8ee04ed8a55d868aacc4d Mon Sep 17 00:00:00 2001 From: jwPark6 Date: Wed, 24 Nov 2021 23:21:01 +0900 Subject: [PATCH 1/6] Korean translation of Circular Linked List --- ...0 \353\246\254\354\212\244\355\212\270.md" | 75 +++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 "ko/\354\236\220\353\243\214\352\265\254\354\241\260/\354\227\260\352\262\260 \353\246\254\354\212\244\355\212\270/\354\233\220\355\230\225 \354\227\260\352\262\260 \353\246\254\354\212\244\355\212\270.md" diff --git "a/ko/\354\236\220\353\243\214\352\265\254\354\241\260/\354\227\260\352\262\260 \353\246\254\354\212\244\355\212\270/\354\233\220\355\230\225 \354\227\260\352\262\260 \353\246\254\354\212\244\355\212\270.md" "b/ko/\354\236\220\353\243\214\352\265\254\354\241\260/\354\227\260\352\262\260 \353\246\254\354\212\244\355\212\270/\354\233\220\355\230\225 \354\227\260\352\262\260 \353\246\254\354\212\244\355\212\270.md" new file mode 100644 index 00000000..9d82dab9 --- /dev/null +++ "b/ko/\354\236\220\353\243\214\352\265\254\354\241\260/\354\227\260\352\262\260 \353\246\254\354\212\244\355\212\270/\354\233\220\355\230\225 \354\227\260\352\262\260 \353\246\254\354\212\244\355\212\270.md" @@ -0,0 +1,75 @@ +# 원형 연결 리스트 + +원형 연결 리스트는 노드로 이루어진 최종 연결 데이터 구조이다. 단일 및 이중 연결 리스트와 마찬가지로, 각 노드는 그 내용이 저장되는 변수 `data`와 목록의 다음 노드에 대한 `pointer`로 구성된다. +연결 리스트는 인접한 요소에 대해 `pointer`를 가지고 있지만 마지막 노드는 헤드 노드, 즉 첫 번째 노드 자체를 향해 연결되어 원형 모양을 형성한다. + +### 배열 & 단일 연결 리스트 & 이중 연결 리스트보다 우수한 점 + +- 모든 노드가 시작점이 될 수 있다. +- 큐 구현에 유용하다. +- 원형 연결 리스트는 응용프로그램에서 목록을 반복적으로 순환하는 데 유용하다. +- 원형 이중 연결 리스트는 `Fibonacci Heap`과 같은 고급 자료구조의 구현을 위해 사용된다. +- 연결 리스트의 크기가 고정되어 있지 않다(가변 크기). +- 배열에 비해 `element`삭제, 추가비용이 적다. + +### 단점 + +- 원형 연결 리스트는 단일 연결 리스트에 비해 복잡하다. +- 원형 연결 리스트의 `reversing`이 단일 연결 리스트나 이중 연결 리스트에 비해 복잡하다. +- 주의하지 않으면 무한 루프에 빠질 수 있다. +- `element`는 배열과 비교하여 직접 접근할 수 없고 순차적으로 접근해야 한다. +- 연결된 리스트의 `element`를 연결하는 `pointer`에 대한 추가 메모리 할당을 필요하다. + +### 시간 복잡도 + +| Operation | Average | Worst | +|-----------|---------|-------| +| Initialize| O(1) | - | +| Access | O(n) | O(n) | +| Search | O(n) | O(n) | +| Insertion | O(1) | O(n) | +| Deletion | O(1) | O(n) | + +### 실제 적용 사례 + +- CPU 자원 할당 +- 멀티플레이어 보드 게임 + +### SLL v.s. CLL + +![image](https://i0.wp.com/algorithms.tutorialhorizon.com/files/2016/03/Circular-Linked-List.png) + +### 예시 + +Insertion +```java +public void insertHead(int data) +{ + Node temp = new Node(data); + Node cur = head; + while(cur.getNext() != head) + cur = cur.getNext(); + if(head == null) + { + head = temp; + head.setNext(head); + } + else + { + temp.setNext(head); + head = temp; + cur.setNext(temp); + } + size++; +} + ``` + +## 구현 + +- [JavaScript](https://github.com/TheAlgorithms/Javascript/blob/master/Data-Structures/Linked-List/SingleCircularLinkedList.js.js) +- [C++](https://github.com/TheAlgorithms/C-Plus-Plus/blob/master/data_structures/cll/cll.cpp) +- [Python](https://github.com/TheAlgorithms/Python/blob/master/data_structures/linked_list/circular_linked_list.py) + +## 영상 URL + +[Video explanation on YouTube](https://youtu.be/HMkdlu5sP4A) \ No newline at end of file From 122d3419331eeaa8de10de0fb476ffad83eb2ef8 Mon Sep 17 00:00:00 2001 From: jwPark6 Date: Thu, 9 Dec 2021 00:02:06 +0900 Subject: [PATCH 2/6] Korean translation of Floyd Cycle Detection Algorithm --- ...14\352\263\240\353\246\254\354\246\230.md" | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 "ko/\355\203\220\354\203\211/\355\224\214\353\241\234\354\235\264\353\223\234 \354\210\234\355\231\230 \355\203\220\354\203\211 \354\225\214\352\263\240\353\246\254\354\246\230.md" diff --git "a/ko/\355\203\220\354\203\211/\355\224\214\353\241\234\354\235\264\353\223\234 \354\210\234\355\231\230 \355\203\220\354\203\211 \354\225\214\352\263\240\353\246\254\354\246\230.md" "b/ko/\355\203\220\354\203\211/\355\224\214\353\241\234\354\235\264\353\223\234 \354\210\234\355\231\230 \355\203\220\354\203\211 \354\225\214\352\263\240\353\246\254\354\246\230.md" new file mode 100644 index 00000000..7ce55110 --- /dev/null +++ "b/ko/\355\203\220\354\203\211/\355\224\214\353\241\234\354\235\264\353\223\234 \354\210\234\355\231\230 \355\203\220\354\203\211 \354\225\214\352\263\240\353\246\254\354\246\230.md" @@ -0,0 +1,39 @@ +# 배열에서 중복 번호를 찾는 플로이드 순환 탐색 알고리즘 + +## 문제 + +`n + 1` 정수를 포함하는 정수 배열이 주어지면 각 정수는 `[1, n]`을 포함한 범위에 있다. 입력 배열에 중복 숫자가 하나만 있으면 이 알고리즘은 원래 배열을 수정하지 않고 중복 숫자를 반환하고, 그렇지 않으면 `-1`을 반환한다. + +## 접근 방식 + + +- 함수 `f(x) = arr[x]`를 사용하여 시퀀스를 구성한다. +<예시> `arr[0]`, `arr[arr[0]]`, `arr[arr[arr[0]]]`, `arr[arr[arr[arr[0]]]]` +- 시퀀스의 각각의 새로운 원소는 이전 요소의 인덱스에 있는 `arr[]`의 원소입니다. +- `x = arr[0]`부터 시작하여 원형 연결 리스트를 생성한다. +- `arr[]`에 중복 원소(최소 하나)가 포함되어 있기 때문에 `cycle`이 나타난다. 중복 값은 순환의 시작점이다. + +## 시간 복잡도 + +O(n) + +## 공간 복잡도 + +O(1) + +## 예시 + +``` +arr = [3, 4, 8, 5, 9, 1, 2, 6, 7, 4] + +return value = 4 +``` + +## 구현 + +- [C++](https://github.com/TheAlgorithms/C-Plus-Plus/blob/master/search/floyd_cycle_detection_algo.cpp) +- [C](https://github.com/TheAlgorithms/C/blob/master/searching/floyd_cycle_detection_algorithm.c) + +#### 영상 URL + +[YouTube video explaining the Floyd Cycle Detection algorithm](https://www.youtube.com/watch?v=B6smdk7pZ14) From 31d00316296f679791dfce692e23fd57e2d7ba8e Mon Sep 17 00:00:00 2001 From: jwPark6 <67006945+jwPark6@users.noreply.github.com> Date: Thu, 9 Dec 2021 10:05:36 +0900 Subject: [PATCH 3/6] =?UTF-8?q?Update=20ko/=EC=9E=90=EB=A3=8C=EA=B5=AC?= =?UTF-8?q?=EC=A1=B0/=EC=97=B0=EA=B2=B0=20=EB=A6=AC=EC=8A=A4=ED=8A=B8/?= =?UTF-8?q?=EC=9B=90=ED=98=95=20=EC=97=B0=EA=B2=B0=20=EB=A6=AC=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: David Leal --- ...227\260\352\262\260 \353\246\254\354\212\244\355\212\270.md" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git "a/ko/\354\236\220\353\243\214\352\265\254\354\241\260/\354\227\260\352\262\260 \353\246\254\354\212\244\355\212\270/\354\233\220\355\230\225 \354\227\260\352\262\260 \353\246\254\354\212\244\355\212\270.md" "b/ko/\354\236\220\353\243\214\352\265\254\354\241\260/\354\227\260\352\262\260 \353\246\254\354\212\244\355\212\270/\354\233\220\355\230\225 \354\227\260\352\262\260 \353\246\254\354\212\244\355\212\270.md" index 9d82dab9..8512a98b 100644 --- "a/ko/\354\236\220\353\243\214\352\265\254\354\241\260/\354\227\260\352\262\260 \353\246\254\354\212\244\355\212\270/\354\233\220\355\230\225 \354\227\260\352\262\260 \353\246\254\354\212\244\355\212\270.md" +++ "b/ko/\354\236\220\353\243\214\352\265\254\354\241\260/\354\227\260\352\262\260 \353\246\254\354\212\244\355\212\270/\354\233\220\355\230\225 \354\227\260\352\262\260 \353\246\254\354\212\244\355\212\270.md" @@ -37,7 +37,7 @@ ### SLL v.s. CLL -![image](https://i0.wp.com/algorithms.tutorialhorizon.com/files/2016/03/Circular-Linked-List.png) +![영상](https://i0.wp.com/algorithms.tutorialhorizon.com/files/2016/03/Circular-Linked-List.png) ### 예시 From fcffafb96e292f6ca7f54dcf9442c16535db9ea4 Mon Sep 17 00:00:00 2001 From: jwPark6 <67006945+jwPark6@users.noreply.github.com> Date: Thu, 9 Dec 2021 10:11:24 +0900 Subject: [PATCH 4/6] =?UTF-8?q?Update=20ko/=ED=83=90=EC=83=89/=ED=94=8C?= =?UTF-8?q?=EB=A1=9C=EC=9D=B4=EB=93=9C=20=EC=88=9C=ED=99=98=20=ED=83=90?= =?UTF-8?q?=EC=83=89=20=EC=95=8C=EA=B3=A0=EB=A6=AC=EC=A6=98.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...203\211 \354\225\214\352\263\240\353\246\254\354\246\230.md" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git "a/ko/\355\203\220\354\203\211/\355\224\214\353\241\234\354\235\264\353\223\234 \354\210\234\355\231\230 \355\203\220\354\203\211 \354\225\214\352\263\240\353\246\254\354\246\230.md" "b/ko/\355\203\220\354\203\211/\355\224\214\353\241\234\354\235\264\353\223\234 \354\210\234\355\231\230 \355\203\220\354\203\211 \354\225\214\352\263\240\353\246\254\354\246\230.md" index 7ce55110..8ca29caf 100644 --- "a/ko/\355\203\220\354\203\211/\355\224\214\353\241\234\354\235\264\353\223\234 \354\210\234\355\231\230 \355\203\220\354\203\211 \354\225\214\352\263\240\353\246\254\354\246\230.md" +++ "b/ko/\355\203\220\354\203\211/\355\224\214\353\241\234\354\235\264\353\223\234 \354\210\234\355\231\230 \355\203\220\354\203\211 \354\225\214\352\263\240\353\246\254\354\246\230.md" @@ -36,4 +36,4 @@ return value = 4 #### 영상 URL -[YouTube video explaining the Floyd Cycle Detection algorithm](https://www.youtube.com/watch?v=B6smdk7pZ14) +[플로이드 순환 탐색 알고리즘 유투브 영상](https://www.youtube.com/watch?v=B6smdk7pZ14) From a1affd2991c65f434648289b029d6e3568194dab Mon Sep 17 00:00:00 2001 From: jwPark6 <67006945+jwPark6@users.noreply.github.com> Date: Thu, 9 Dec 2021 10:16:55 +0900 Subject: [PATCH 5/6] =?UTF-8?q?Update=20=EC=9B=90=ED=98=95=20=EC=97=B0?= =?UTF-8?q?=EA=B2=B0=20=EB=A6=AC=EC=8A=A4=ED=8A=B8.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Translation of Video explanation on YouTube --- ...227\260\352\262\260 \353\246\254\354\212\244\355\212\270.md" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git "a/ko/\354\236\220\353\243\214\352\265\254\354\241\260/\354\227\260\352\262\260 \353\246\254\354\212\244\355\212\270/\354\233\220\355\230\225 \354\227\260\352\262\260 \353\246\254\354\212\244\355\212\270.md" "b/ko/\354\236\220\353\243\214\352\265\254\354\241\260/\354\227\260\352\262\260 \353\246\254\354\212\244\355\212\270/\354\233\220\355\230\225 \354\227\260\352\262\260 \353\246\254\354\212\244\355\212\270.md" index 8512a98b..db4e2246 100644 --- "a/ko/\354\236\220\353\243\214\352\265\254\354\241\260/\354\227\260\352\262\260 \353\246\254\354\212\244\355\212\270/\354\233\220\355\230\225 \354\227\260\352\262\260 \353\246\254\354\212\244\355\212\270.md" +++ "b/ko/\354\236\220\353\243\214\352\265\254\354\241\260/\354\227\260\352\262\260 \353\246\254\354\212\244\355\212\270/\354\233\220\355\230\225 \354\227\260\352\262\260 \353\246\254\354\212\244\355\212\270.md" @@ -72,4 +72,4 @@ public void insertHead(int data) ## 영상 URL -[Video explanation on YouTube](https://youtu.be/HMkdlu5sP4A) \ No newline at end of file +[유투브 ](https://youtu.be/HMkdlu5sP4A) From 6c35c63b1d6682fc6bdc12a6dd1581260a6df42b Mon Sep 17 00:00:00 2001 From: jwPark6 <67006945+jwPark6@users.noreply.github.com> Date: Thu, 9 Dec 2021 10:17:17 +0900 Subject: [PATCH 6/6] =?UTF-8?q?Update=20=EC=9B=90=ED=98=95=20=EC=97=B0?= =?UTF-8?q?=EA=B2=B0=20=EB=A6=AC=EC=8A=A4=ED=8A=B8.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...227\260\352\262\260 \353\246\254\354\212\244\355\212\270.md" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git "a/ko/\354\236\220\353\243\214\352\265\254\354\241\260/\354\227\260\352\262\260 \353\246\254\354\212\244\355\212\270/\354\233\220\355\230\225 \354\227\260\352\262\260 \353\246\254\354\212\244\355\212\270.md" "b/ko/\354\236\220\353\243\214\352\265\254\354\241\260/\354\227\260\352\262\260 \353\246\254\354\212\244\355\212\270/\354\233\220\355\230\225 \354\227\260\352\262\260 \353\246\254\354\212\244\355\212\270.md" index db4e2246..623c3f24 100644 --- "a/ko/\354\236\220\353\243\214\352\265\254\354\241\260/\354\227\260\352\262\260 \353\246\254\354\212\244\355\212\270/\354\233\220\355\230\225 \354\227\260\352\262\260 \353\246\254\354\212\244\355\212\270.md" +++ "b/ko/\354\236\220\353\243\214\352\265\254\354\241\260/\354\227\260\352\262\260 \353\246\254\354\212\244\355\212\270/\354\233\220\355\230\225 \354\227\260\352\262\260 \353\246\254\354\212\244\355\212\270.md" @@ -72,4 +72,4 @@ public void insertHead(int data) ## 영상 URL -[유투브 ](https://youtu.be/HMkdlu5sP4A) +[유투브 영상](https://youtu.be/HMkdlu5sP4A)