Skip to content

Commit 1b1af29

Browse files
author
Lee Joonhun
authored
Added Korean translation (#118)
* added korean directory * added fibonacci numbers in ko basic math * added geometric sequence in ko basic math * revised geometric sequence * added arithmetic sequence in ko basic math * added average in ko basic math * added maximum number and revised ko basic math * added array and revised ko basic math * added Bellman-Ford in ko data structure
1 parent b518a26 commit 1b1af29

File tree

10 files changed

+613
-0
lines changed

10 files changed

+613
-0
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,6 @@ Popular algorithms explained in simple language with examples and links to their
1515
- [Nepali](./ne)
1616
- [Hebrew](./he)
1717
- [Indonesian](./id)
18+
- [Korean](./ko)
1819

1920
To add a new language, create a new folder using 2 character `ISO 639-1` code of that language. For example use `hi` for `Hindi` explanations.

ko/README.md

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# 알고리즘 이름
2+
3+
알고리즘에 대한 간략한 설명을 다음과 같이 적어주세요:
4+
5+
1. 시간 복잡도
6+
2. 공간 복잡도
7+
3. 활용
8+
4. 만든 사람
9+
5. 등...
10+
11+
## 절차
12+
13+
알고리즘을 명확하고 단순하며 이해하기 쉬운 단계로 구분하여 설명해주세요.
14+
15+
## 예시
16+
17+
간단한 예시를 들어 알고리즘의 동작 과정을 보여주세요.
18+
19+
## 구현
20+
21+
다양한 프로그래밍 언어로 구현된 알고리즘을 링크로 연결해주세요.
22+
NOTE: `TheAlgorithms`의 다른 저장소 안에 있는 링크만 연결해주세요.
23+
24+
## 영상 URL
25+
26+
알고리즘을 설명하는 영상의 URL을 첨부해주세요.
27+
28+
## 기타
29+
30+
다른 모든 정보는 이 섹션에 포함해주세요.

ko/기초 수학/등비수열.md

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
# 등비수열
2+
3+
연속된 두 항의 비율이 항상 같을 때 그 수열을 `등비수열`이라고 한다. 간단히 말해, 이전 항에 상수를 곱하여 다음 항을 계산하여 등비수열을 만들 수 있다.
4+
5+
예를 들어, `2, 4, 8, 16`은 연속된 두 항의 비율(공비)가 모두 같으므로 등비수열이다 (4 / 2 = 8 / 4 = 16 / 8 = 2).
6+
7+
<p align="center">
8+
<img width="60%" src="https://user-images.githubusercontent.com/75872316/122635376-2fad6f80-d101-11eb-9d06-74c5c854cc9d.png">
9+
</p>
10+
11+
**등비수열에 관한 사실들:**
12+
13+
1. **초항:** 등비수열에서, 첫 항은 초항이라고 불린다.
14+
2. **공비:** 다음 항을 이전 항으로 나누어 나타낸 연속된 두 항의 비율
15+
3. 등비수열은 공비에 따라 여러 경향을 보인다. 만약 공비가:
16+
- 양수이면, 모든 항은 첫 항과 같은 부호를 가진다.
17+
- 음수이면, 부호가 번갈아 가며 나타난다.
18+
- 1보다 크면, (초항의 부호에 따라) 양의 무한대 또는 음의 무한대를 향해 지수적으로 증가한다.
19+
- 1이면, 모든 항의 값이 같은 상수수열이다.
20+
- −1과 1사이에 있지만 0이 아니면, 0을 향해 지수적으로 감소한다.
21+
- −1이면, 모든 항의 절댓값은 같지만, 부호가 번갈아 가며 나타난다.
22+
- -1보다 작으면, 부호가 번갈아 가며 나타나고, 절대값은 양의 무한대를 향해 지수적으로 증가한다.
23+
24+
**등비수열의 n번째 항 공식:**
25+
26+
`a`가 초항이고, `r`이 공비일 때, n번째 항은:
27+
28+
<p align="center">
29+
<img width="60%" src="https://user-images.githubusercontent.com/75872316/122635586-6fc12200-d102-11eb-9a87-333c9a578cc8.png">
30+
</p>
31+
32+
**등비급수(등비수열의 첫 n항의 합) 공식:**
33+
34+
<p align="center">
35+
<img width="60%" src="https://user-images.githubusercontent.com/75872316/122635613-9717ef00-d102-11eb-89db-5182e966b1db.png">
36+
</p>
37+
38+
**등비수열에 관련된 문제를 풀기 위한 일반적인 공식:**
39+
40+
`a`가 초항, `r`이 공비일 때:
41+
42+
- 등비수열의 n번째 항 = `a * r^(n-1)`.
43+
- 기하평균 = `n개 항의 곱의 n제곱근`.
44+
- 등비급수 (r < 1) = `[a (1 – r^n)] / [1 – r]`.
45+
- 등비급수 (r > 1) = `[a (r^n – 1)] / [r – 1]`.
46+
- 무한등비급수 (r < 1) = `(a) / (1 – r)`.
47+
48+
## 영상 URL
49+
50+
- [Don't Memorise](https://youtu.be/gua96ju_FBk)
51+
- [Code Bashers (C++)](https://youtu.be/92ZldzuGUHs)
52+
53+
## 출처
54+
55+
- [GeeksforGeeks](https://www.geeksforgeeks.org/geometric-progression/)

ko/기초 수학/등차수열.md

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
# 등차수열
2+
3+
연속된 두 항의 차이가 항상 같을 때 그 수열을 `등차수열`이라고 한다. 간단히 말해, 이전 항에 상수를 더하여 다음 항을 계산하여 등차수열을 만들 수 있다.
4+
5+
예를 들어, `2, 4, 6, 8, 10`은 연속된 두 항의 차이(공차)가 모두 같으므로 등차수열이다 (4 - 2 = 6 - 4 = 8 - 6 = 10 - 8 = 2).
6+
7+
<p align="center">
8+
<img width="60%" src="https://user-images.githubusercontent.com/75872316/122635132-ce38d100-d0ff-11eb-8fdf-2e14a9f640cc.png">
9+
</p>
10+
11+
**등차수열에 관한 사실들:**
12+
13+
1. 초항: 등차수열에서, 수열의 첫 항은 초항이라고 불린다.
14+
2. 공차: 연속된 두 항의 차이를 공차라고 한다.
15+
3. 등차수열의 경향성은 공차 `d`에 따라 결정된다. 만약 공차가 양수라면, 모든 항은 양의 무한대를 향해 증가한다. 하지만 만약 공차가 음수라면, 모든 항은 음의 무한대를 향해 감소한다.
16+
17+
**등차수열의 n번째 항 공식:**
18+
19+
`a`가 초항이고, `d`가 공차일 때, n번째 항은:
20+
21+
<p align="center">
22+
<img width="60%" src="https://user-images.githubusercontent.com/75872316/122635193-25d73c80-d100-11eb-9015-344d36633704.png">
23+
</p>
24+
25+
**등차급수(등차수열의 첫 n항의 합) 공식:**
26+
27+
<p align="center">
28+
<img width="60%" src="https://user-images.githubusercontent.com/75872316/122635260-7a7ab780-d100-11eb-82a5-8ceeba3aff03.png">
29+
</p>
30+
31+
**등차수열에 관련된 물제를 풀기 위한 일반적인 공식:**
32+
33+
`a`가 초항, `d`가 공차일 때:
34+
35+
- 등차수열의 n번째 항 = `a + d*(n-1)`.
36+
- 산술평균 = `전체 항의 합 / 항의 개수`.
37+
- 등차급수 = `0.5 * n * (초항 + 말항)` = `0.5 * n * [2a + (n-1) d]`.
38+
39+
## 영상 URL
40+
41+
- [Don't Memorise](https://youtu.be/gua96ju_FBk)
42+
- [iBytes Academy (C++)](https://youtu.be/U_qtSRQYoPs)
43+
44+
## 출처
45+
46+
- [GeeksforGeeks](https://www.geeksforgeeks.org/arithmetic-progression)

ko/기초 수학/자릿수.md

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
# 자릿수
2+
3+
`N = 2019`이라고 할 때, `N`의 자릿수는 4이고, 각 자리의 숫자는 `2`, `0`, `1`, `9`이다.
4+
5+
몇 가지 예시를 보면:
6+
7+
```
8+
N = 00 [영(零)]
9+
자릿수 = 0
10+
11+
N = -123 [음수]
12+
자릿수 = 3
13+
14+
N = 10000 [양수]
15+
자릿수 = 5
16+
```
17+
18+
## 간단한 방법
19+
20+
가장 먼저 떠오르는 방법은 간단하다:
21+
22+
1. 숫자 N이 0인지 확인한다.
23+
2. N이 0이 아닌 경우, 자릿수를 1 늘린다.
24+
3. N을 10으로 나눈다.
25+
4. N이 0이 될 때까지 위의 과정을 반복한다.
26+
27+
**알고리즘 분석:** 위 방법에서 수행되는 작업의 수는 숫자 N의 자릿수와 같다는 사실을 쉽게 알 수 있다. 따라서 이 방법의 시간 복잡도는 $O(자릿수)$이다.
28+
29+
**모의 실행:** `N = 58964`라고 할 때,
30+
31+
자릿수를 저장할 변수 `digitsCount`를 0으로 초기화하고, `N`이 0이 아닌 동안 반복적으로 `digitsCount`를 늘리고 `N`을 10으로 나눈다.
32+
33+
```
34+
Iteration 1: N not equals to 0
35+
Increment digitsCount, digitsCount = digitsCount + 1.
36+
digitsCount = 0 + 1 = 1.
37+
N = N/10 = 58964/10 = 5896.
38+
39+
Iteration 2: N not equals to 0
40+
Increment digitsCount, digitsCount = digitsCount + 1.
41+
digitsCount = 1 + 1 = 2.
42+
N = N/10 = 5896/10 = 589.
43+
44+
Iteration 3: N not equals to 0
45+
Increment digitsCount, digitsCount = digitsCount + 1.
46+
digitsCount = 2 + 1 = 3.
47+
N = N/10 = 589/10 = 58.
48+
49+
Iteration 4: N not equals to 0
50+
Increment digitsCount, digitsCount = digitsCount + 1.
51+
digitsCount = 3 + 1 = 4.
52+
N = N/10 = 58/10 = 5.
53+
54+
Iteration 5: N not equals to 0
55+
Increment digitsCount, digitsCount = digitsCount + 1.
56+
digitsCount = 4 + 1 = 5.
57+
N = N/10 = 5/10 = 0.
58+
59+
Iteration 6: N becomes equal to 0.
60+
Terminate any further operation.
61+
Return value of digitsCount.
62+
```
63+
64+
그러므로 `N`의 자릿수는 5이다.
65+
66+
## 더 나은 방법
67+
68+
수학을 활용하면 더 나은 방법을 찾을 수 있다. N의 자릿수는 다음의 공식으로 쉽게 구할 수 있다:
69+
70+
```
71+
N의 자릿수 = log10(N) + 1.
72+
```
73+
74+
**유도:** `N`의 자릿수를 `K`라고 하면:
75+
76+
```
77+
10^(K-1) <= N < 10^K
78+
```
79+
80+
위 부등식의 양변에 상용로그(밑이 10인 로그)를 취하면:
81+
82+
```
83+
K - 1 <= log10(N) < K.
84+
85+
또는, K - 1 + 1 <= log10(N) + 1 < K + 1
86+
또는, K <= log10(N) + 1 < K + 1
87+
```
88+
89+
그러므로,
90+
91+
```
92+
K = floor(log10(N) + 1)
93+
```
94+
95+
**알고리즘 분석:** 위 방법은 `로그``버림`이라는 수학적인 함수를 사용한다. 그러므로 이 방법의 시간 복잡도는 두 함수의 복잡도에 따라 달라진다. 버림함수는 소수점 이하의 숫자들을 버리기만 하면 되기 때문에 사실상 항상 일정한 시간이 걸린다 (적어도 그렇게 만들기 쉽다). 일반적으로 고정폭 부동 소수점 값을 사용하기 때문에 실용적으로는 `로그함수도 일정한 시간이 걸린다고 가정`할 수 있다. 하지만 임의 정밀도 "큰 수" 라이브러리를 사용하면, 사용되는 로그 알고리즘에 따라 로그함수의 성능이 달라질 수 있다.
96+
97+
## 영상 URL
98+
99+
- [Programming Tutorials (C, C++)](https://www.youtube.com/watch?v=ngWnvWR8NkE)
100+
101+
## 출처
102+
103+
- [GeeksforGeeks](https://www.geeksforgeeks.org/program-count-digits-integer-3-different-methods/)

ko/기초 수학/최댓값.md

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
# 최댓값
2+
3+
숫자로 구성된 리스트의 최댓값을 찾는다.
4+
5+
## 활용
6+
7+
리스트의 최댓값을 찾으면, 다음과 같은 작업들을 수행할 수 있다.
8+
9+
- 가장 큰 값을 기준으로 레코드 정렬하기
10+
- 특정 항목을 탐색하는 시간 줄이기
11+
12+
## 방법
13+
14+
최댓값은 다양한 방식으로 찾을 수 있다. 여기서는 세 가지 방법을 제시한다.
15+
16+
1. 리스트의 모든 원소를 비교한다.
17+
2. 이미 정의된 함수를 사용한다.
18+
3. 정렬한다.
19+
20+
## 예시 1
21+
22+
리스트의 모든 원소를 비교한다:
23+
24+
`[6, 4, 50, 8, 70, 2, 20]`라는 리스트가 주어졌을 때, 이 리스트의 최댓값을 구하라.
25+
26+
### 1단계
27+
28+
`[6, 4, 50, 8, 70, 2, 20]`를 함수에 입력한다.
29+
30+
### 2단계
31+
32+
비교 과정을 통해 가장 큰 숫자를 찾을 것이다. 리스트의 첫 원소를 최댓값으로 설정한다.
33+
34+
`max = array[0]`이므로, `max = 6`이다.
35+
36+
### 3단계
37+
38+
리스트의 모든 원소와 최댓값을 비교한다. 만약 원소가 최댓값보다 크면, 그 수를 최댓값으로 지정한다.
39+
40+
`max``array[2]`를 비교하면 `6 < 50`이므로, `max = 50`이 된다.
41+
42+
모든 원소와 비교가 끝나면, `max = 70`이다.
43+
44+
### 4단계
45+
46+
`70`을 반환한다.
47+
48+
## 예시 2
49+
50+
이미 정의된 함수를 사용한다:
51+
52+
`[6, 4, 50, 8, 70, 2, 20]`라는 리스트가 주어졌을 때, 이 리스트의 최댓값을 구하라.
53+
54+
### 1단계
55+
56+
`[6, 4, 50, 8, 70, 2, 20]`를 함수에 입력한다.
57+
58+
### 2단계
59+
60+
이미 정의된 `max` 함수가 `70`을 반환한다.
61+
62+
### 3단계
63+
64+
`70`을 반환한다.
65+
66+
## 예시 3
67+
68+
정렬한다:
69+
70+
`[6, 4, 50, 8, 70, 2, 20]`라는 리스트가 주어졌을 때, 이 리스트의 최댓값을 구하라.
71+
72+
### 1단계
73+
74+
`[6, 4, 50, 8, 70, 2, 20]`를 함수에 입력한다.
75+
76+
### 2단계
77+
78+
이미 정의된 `sort` 함수가 전체 리스트를 오름차순으로 정렬하여 `[2, 4, 6, 8, 20, 50, 70]`을 반환한다.
79+
80+
### 3단계
81+
82+
이미 정의된 `last` 함수가 리스트의 마지막 원소로 `70`을 반환한다.
83+
84+
### 4단계
85+
86+
`70`을 반환한다.
87+
88+
## 구현
89+
90+
- [Ruby](https://github.com/TheAlgorithms/Ruby/blob/master/maths/find_max.rb)
91+
92+
## 영상 URL
93+
94+
- [GeeksforGeeks](https://youtu.be/En68ipRaFOU)
95+
96+
## 출처
97+
98+
- [GeeksforGeeks](https://www.geeksforgeeks.org/c-program-find-largest-element-array/)

0 commit comments

Comments
 (0)