Skip to content

Commit d4ad258

Browse files
author
gyusuk
committedAug 25, 2019
add LCA
1 parent 1459508 commit d4ad258

File tree

1 file changed

+52
-0
lines changed

1 file changed

+52
-0
lines changed
 
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
## LCA(Lowest Common Ancestor) ์•Œ๊ณ ๋ฆฌ์ฆ˜
2+
3+
> ์ตœ์†Œ ๊ณตํ†ต ์กฐ์ƒ ์ฐพ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜
4+
>
5+
> โ†’ ๋‘ ์ •์ ์ด ๋งŒ๋‚˜๋Š” ์ตœ์ดˆ ๋ถ€๋ชจ ์ •์ ์„ ์ฐพ๋Š” ๊ฒƒ!
6+
7+
ํŠธ๋ฆฌ ํ˜•์‹์ด ์•„๋ž˜์™€ ๊ฐ™์ด ์ฃผ์–ด์กŒ๋‹ค๊ณ  ํ•˜์ž
8+
9+
<img src="https://media.geeksforgeeks.org/wp-content/cdn-uploads/lca.png" width=400>
10+
11+
4์™€ 5์˜ LCA๋Š”? โ†’ 4์™€ 5์˜ ์ฒซ ๋ถ€๋ชจ ์ •์ ์€ '2'
12+
13+
4์™€ 6์˜ LCA๋Š”? โ†’ ์ฒซ ๋ถ€๋ชจ ์ •์ ์€ root์ธ '1'
14+
15+
***์–ด๋–ป๊ฒŒ ์ฐพ์ฃ ?***
16+
17+
ํ•ด๋‹น ์ •์ ์˜ depth์™€ parent๋ฅผ ์ €์žฅํ•ด๋‘๋Š” ๋ฐฉ์‹์ด๋‹ค. ํ˜„์žฌ ๊ทธ๋ฆผ์—์„œ์˜ depth๋Š” ์•„๋ž˜์™€ ๊ฐ™์„ ๊ฒƒ์ด๋‹ค.
18+
19+
```
20+
[depth : ์ •์ ]
21+
0 โ†’ 1(root ์ •์ )
22+
1 โ†’ 2, 3
23+
2 โ†’ 4, 5, 6, 7
24+
```
25+
26+
<br>
27+
28+
parent๋Š” ์ •์ ๋งˆ๋‹ค ๊ฐ€์ง€๋Š” ๋ถ€๋ชจ ์ •์ ์„ ์ €์žฅํ•ด๋‘”๋‹ค. ์œ„์˜ ์˜ˆ์‹œ์—์„œ ์ €์žฅ๋œ parent ๋ฐฐ์—ด์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.
29+
30+
```java
31+
// 1 ~ 7๋ฒˆ ์ •์  (root๋Š” ๋ถ€๋ชจ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— 0)
32+
int parent[] = {0, 1, 1, 2, 2, 3, 3}
33+
```
34+
35+
์ด์ œ
36+
37+
์ด ๋‘ ๋ฐฐ์—ด์„ ํ™œ์šฉํ•ด์„œ ๋‘ ์ •์ ์ด ์ฃผ์–ด์กŒ์„ ๋•Œ LCA๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค. ๊ณผ์ •์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.
38+
39+
```java
40+
// ๋‘ ์ •์ ์˜ depth ํ™•์ธํ•˜๊ธฐ
41+
while(true){
42+
if(depth๊ฐ€ ์ผ์น˜)
43+
if(๋‘ ์ •์ ์˜ parent ์ผ์น˜?) LCA ์ฐพ์Œ(์ข…๋ฃŒ)
44+
else ๋‘ ์ •์ ์„ ์ž์‹ ์˜ parent ์ •์  ๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝ
45+
else // depth ๋ถˆ์ผ์น˜
46+
๋” depth๊ฐ€ ๊นŠ์€ ์ •์ ์„ ํ•ด๋‹น ์ •์ ์˜ parent ์ •์ ์œผ๋กœ ๋ณ€๊ฒฝ(depth๊ฐ€ ๊ฐ์†Œ๋จ)
47+
}
48+
```
49+
50+
<br>
51+
52+
ํŠธ๋ฆฌ ๋ฌธ์ œ์—์„œ ๊ณตํ†ต ์กฐ์ƒ์„ ์ฐพ์•„์•ผํ•˜๋Š” ๋ฌธ์ œ๋‚˜, ์ •์ ๊ณผ ์ •์  ์‚ฌ์ด์˜ ์ด๋™๊ฑฐ๋ฆฌ ๋˜๋Š” ๋ฐฉ๋ฌธ๊ฒฝ๋กœ๋ฅผ ์ €์žฅํ•ด์•ผ ํ•  ๊ฒฝ์šฐ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

0 commit comments

Comments
 (0)