Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 70de058

Browse files
minseonkkimPanquesito7
andauthored
Add Korean translation (#209)
* added stack in ko data structure * added Fractional Knapsack in ko Greedy Algorithms --------- Co-authored-by: David Leal <halfpacho@gmail.com>
1 parent fd69c67 commit 70de058

File tree

2 files changed

+71
-0
lines changed

2 files changed

+71
-0
lines changed
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
# 배낭 문제 (그리디 알고리즘)
2+
3+
#### 문제
4+
5+
무게와 가치가 정해진 항목들의 집합이 주어졌을 때, 주어진 최대 무게 내에서 가치가 최대가 되도록 하는 항목의 수를 찾아라.
6+
7+
##### 그리디 알고리즘은 분할 가능한 배낭 문제에서 항상 최적해를 제공한다.
8+
9+
#### 시간 복잡도
10+
11+
최악: $O(nlog n)$
12+
13+
#### 예시
14+
15+
```
16+
배낭의 최대 무게 W = 60
17+
value = [280, 100, 120, 120]
18+
weight = [40, 10, 20, 24]
19+
20+
Ratio(V/W) = 7,10,6,5
21+
각 항목을 A,B,C,D라 하자.
22+
23+
먼저 항목들을 가치와 무게의 비율을 기준으로 내림차순으로 정렬한다.
24+
B는 배낭의 용량보다 작기 때문에 첫 번째로 선택된다. 다음으로, 남은 용량이 A의 무게보다 크기 때문에 A가 선택된다.
25+
배낭의 남은 용량이 C의 무게보다 작기 때문에 C는 전체 항목을 선택할 수 없다.
26+
따라서 C는 (60-50)/20의 비율만큼 일부만 선택된다.
27+
이제 배낭의 용량은 지정된 항목들의 무게와 동일해서 더 이상 항목을 선택할 수 없다.
28+
29+
선택된 물건들의 총 무게는 10+40+20*(10/20) = 60이다.
30+
31+
총 이익은 100+280+120*(10/20) = 380+60 = 440이다.
32+
33+
이것이 가장 적합한 선택이다. 다른 항목을 조합하여 더 많은 돈을 버는 것은 불가능하다.
34+
```
35+
36+
#### 구현
37+
38+
- [C++](https://github.com/TheAlgorithms/C-Plus-Plus/blob/master/greedy_algorithms/knapsack.cpp)
39+
- [Python](https://github.com/TheAlgorithms/Python/tree/master/knapsack)
40+
- [C-Sharp](https://github.com/TheAlgorithms/C-Sharp/tree/master/Algorithms/Knapsack)
41+
42+
#### 영상 URL
43+
44+
[A CS50 video explaining the Greedy Algorithm](https://www.youtube.com/watch?v=Ou9OA0yQCYA)

‎ko/자료구조/스택/스택.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# 스택
2+
3+
스택은 객체에 접근하는 순서가 정해진 기본적인 선형 데이터 구조이다. 이 순서는 LIFO (Last In First Out) 또는 FILO (First in Last Out)라고 불린다. 대표적인 스택 예시로는 식당의 접시, 쌓인 책 더미, 프링글스 상자 등이 있다.
4+
스택은 파서 및 식 평가, 백트래킹 알고리즘 등을 구현하는 데 사용된다. 기본 작업은 스택에 요소를 넣는 것(push)과 스택에서 요소를 빼는 것(pop)이다.
5+
연결 리스트 또는 리스트 배열을 사용하여 구현할 수 있다. 스택은 가장 위에 있는 요소를 가리키는 "top 포인터" 하나만 가진다. 삽입과 삭제는 스택의 한쪽 끝에서만 발생한다.
6+
7+
# 표준 스택 연산자
8+
9+
1) push(): 스택의 맨 위에 요소 삽입
10+
2) pop(): 스택의 맨 위에 있는 요소 삭제
11+
3) isEmpty(): 스택이 비어 있는지 여부 확인
12+
4) isFull(): 스택이 가득 찼는지 여부 확인
13+
5) peek(): 맨 위에 있는 요소의 값을 가져옴(제거X)
14+
15+
# 스택으로 작업하기
16+
17+
스택에서는 TOP이라는 포인터를 사용하여 스택의 맨 위에 있는 요소를 추적한다. 스택을 초기화할 때, TOP의 값을 -1로 설정하여 TOP == -1인 경우 스택이 비어 있는지 확인할 수 있다. 요소를 push할 때마다, TOP의 값을 증가시키고, TOP이 가리키는 위치에 새로운 요소를 넣는다. 요소를 pop할 때, TOP이 가리키는 값을 반환하고, TOP의 값을 감소시킨다. push하기 전에 스택이 가득 차 있는지 확인하고, pop하기 전에 스택이 이미 비어 있는지 확인한다.
18+
19+
# 소스
20+
21+
1) [Stack Data Structure - GeeksForGeeks](https://www.geeksforgeeks.org/stack-data-structure/)
22+
2) [DS-Stack JavaPoint](https://www.javatpoint.com/data-structure-stack)
23+
3) [Stack Data Structure](https://www.programiz.com/dsa/stack)
24+
25+
# 영상 URL
26+
27+
- [Stack Data Structure](https://youtu.be/F1F2imiOJfk)

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /