์ค๋์ ๋ช
์ธ
" ์คํจ๋ ๋จ์ง ๋ค์ ์์ํ ์ ์๋ ๊ธฐํ๋ค. ์ด๋ฒ์๋ ๋ ํ๋ช
ํ๊ฒ. "
- ํจ๋ฆฌ ํฌ๋
(๋ฏธ๊ตญ ์๋์ฐจ ์ฐ์
์ ๊ฐ์ฒ์, ํฌ๋ ์๋์ฐจ ์ฐฝ๋ฆฝ์)
์คํ(Stack)๊ฐ์"์คํ"์ ๋ฐ์ดํฐ๋ฅผ ์์์ ์ฌ์ฉํ๋ ์๋ฃ๊ตฌ์กฐ๋ก, "ํ์
์ ์ถ(LIFO, Last In First Out)" ๋ฐฉ์์ผ๋ก ์๋ํ๋ค. ์ฆ, ๋์ค์ ๋ค์ด๊ฐ ๋ฐ์ดํฐ๊ฐ ๋จผ์ ๋์ค๋ ๊ตฌ์กฐ์ด๋ค. ์คํ์ ์ฃผ๋ก ํจ์ ํธ์ถ, ๊ณ์ฐ๊ธฐ ํ๋ก๊ทธ๋จ์์ ์์ ๊ณ์ฐ, ๋๋ ๋ธ๋ผ์ฐ์ ์ ๋ค๋ก ๊ฐ๊ธฐ ๊ธฐ๋ฅ ๋ฑ์์ ์ฌ์ฉ๋๋ค.* ์ด์ ๋ฐ๋์ "์ ์
์ ์ถ(FIFO, First In First Out)" ๊ตฌ์กฐ์ ์๋ฃ๊ตฌ์กฐ๋ฅผ 'ํ'๋ผ๊ณ ํ๋ค. ์คํ์ ํ์ฉํ ์ฝ๋ฉํ
์คํธ ๋ฌธ์ ๋ ์ ํ์ด ์ ํด์ ธ ์๋ค. ๋ฌธ์ ๋ฅผ ์ ์ฝ์ด๋ณด๊ณ ๋ฐ์ดํฐ๋ฅผ ์์ ์ฌ๋ฆฐ๋ค๋ ์ง, ๋์ค์ ์์ ๋ฐ์ดํฐ๋ฅผ ๋จผ์ ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ด๋ฉด ์คํ์ ํ์ฉํ๋ฉด ๋๋ค. ์คํ์ ์ฌ์ฉํ๋ ๋ฌธ์ ์ ํ โ
๊ดํธ ์ ํจ์ฑ ๊ฒ์ฌ์ฃผ์ด์ง ๋ฌธ์์ด์์ ๊ดํธ์ ์ง์ด ๋ง๋์ง ํ์ธํ๋ ๋ฌธ์ ์คํ์ ์ฌ์ฉํด ์ฌ๋ ๊ดํธ๋ ์ค..
์ฝํ
๋ฌธ์ ํ ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ ์๋ฃ๊ตฌ์กฐ๋ ๊ณต๋ถํด์ผ ํ์ง๋ง, ์ฝ๋๋ฅผ ์์ฑํ๋ ๋ฐฉ๋ฒ๋ ์ค์ํ๋ค.ํด๋ฆฐ ์ฝ๋๋ฅผ ์์ฑํ๊ธฐ ์ํด์๋ ์๋ ์ธ ๊ฐ์ง ์ต๊ด์ ๋ค์ฌ์ผ ํ๋ค.ํ๋ฃจ ์์นจ์ ์ฝ๋ ์ฐ๋ ์ต๊ด์ด ๋ฐ๋์ง๋ ์๊ฒ ์ง๋ง ๋งค๋ฒ ์ฝ๋๋ฅผ ์์ฑํ ๋๋ง๋ค ์ด๋ฌํ ์ต๊ด์ ์ผ๋์ ๋๊ณ ์์ฑํ๋ค ๋ณด๋ฉด ์ ์ฐจ ํด๋ฆฐ ์ฝ๋ ์์ฑ ๋ฅ๋ ฅ์ด ํฅ์๋ ๊ฒ์ด๋ผ๊ณ ๊ธฐ๋ํ๋ค. 1. ์กฐ๊ธฐ๋ฐํ (early return)์กฐ๊ธฐ ๋ฆฌํด(early return)์ ์กฐ๊ฑด์ด ์ถฉ์กฑ๋๋ฉด ํจ์๋ ๋ฉ์๋์์ ๋ฐ๋ก ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ ํ๋ก๊ทธ๋๋ฐ ๊ธฐ๋ฒ์ด๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋ถํ์ํ ๊ณ์ฐ์ ํผํ๊ณ ์ฝ๋์ ๊ฐ๋
์ฑ์ ๋์ผ ์ ์๋ค.์๋ฅผ ๋ค์ด, totalPrice ํจ์์์ ๊ฐ๊ฒฉ์ด 100์ ์ด๊ณผํ๋ ๊ฒฝ์ฐ ๋ฐ๋ก ํ ์ธ์ ์ ์ฉํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ ์ฝ๋๋ฅผ ์งค ๋, ์กฐ๊ธฐ ๋ฆฌํด์ ํ์ง ์์ผ๋ฉด ํ ์ธ ๋ก์ง์ ..
์ ๋ ฌ(Sort)๊ฐ์๋ฐ์ดํฐ๋ฅผ ์ค๋ฆ์ฐจ์ ๋๋ ๋ด๋ฆผ์ฐจ์์ผ๋ก ๋ฐฐ์ดํ๊ฑฐ๋ ๋ฆฌ์คํธ์ ์์๋ฅผ ์ ๋ ฌํ๋ ๊ณผ์ ์ด๋ค. ์ ๋ ฌ์ ํ์ฉํ ์ฝ๋ฉํ
์คํธ ๋ฌธ์ ๋ ๋งค์ฐ ๋ค์ํ๋ค. ์ ๋ ฌ ๋ฌธ์ ๋ ๋ฌธ์ ๋ฅผ ํ ๋๋ ์ ๋ ฌ ๊ธฐ์ค์ ์ ํํ ํ์
ํ๊ณ , ๊ทธ์ ๋ง๋ ์๊ณ ๋ฆฌ์ฆ์ ์ ํํ๋ ๊ฒ์ด ์ค์ํ๋ค. ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ, ์ด์ง ํ์, ํฌ ํฌ์ธํฐ, ๋น๋์ ๊ณ์ฐ ๋ฑ ๋ค์ํ ๊ธฐ์ ์ ์กฐํฉํด ํด๊ฒฐํด์ผ ํ๋ ๋ฌธ์ ๋ค์ด ๋ง๋ค. ์ฃผ์ด์ง ์กฐ๊ฑด์ Arrays.sort() ๋ฅผ ์ด์ฉํด์ ์ ๋ ฌํด์ผ ํ๋ ๋ฌธ์ ๋ ์๊ณ , ์ ๋ ฌ ๊ธฐ์ค์ ์ฌ์ฉ์ ์ ์ ๊ฐ์ฒด์ ๋ง๊ฒ ์ง์ ํด์ผ ํ๋ ๊ฒฝ์ฐ, Comparator ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ๊ฐ์ฒด๋ฅผ Collections.sort() ๋๋ Arrays.sort()์ ์ ๋ฌํ์ฌ ์ ๋ ฌํ๋ฉด ๋๊ณ , ์ด ๋ Java 8 ์ด์์์๋ Comparator๋ฅผ ๋๋ค ํํ์์ผ๋ก ..
๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ(Greedy Algorithm)๊ฐ์greedyํ์ฉ์ฌ - 1. ํ์์ค๋ฌ์ด 2.์์ฌ ๋ง์ ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ(Greedy Algorithm)์ ๋งค ์๊ฐ ๊ฐ์ฅ ์ต์ ์ด๋ผ๊ณ ํ๋จ๋๋ ์ ํ์ ๋ฐ๋ณตํ์ฌ ์ต์ข
ํด๋ต์ ๊ตฌํ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ์ฆ, ํ์ฌ ๋จ๊ณ์์์ ์ต์ ์ ์ ํ์ด ์ต์ข
์ ์ผ๋ก๋ ์ต์ ํด(Optimal Solution)๊ฐ ๋๋ค๊ณ ๊ฐ์ ํ๊ณ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค. ์ฝ๋ฉํ
์คํธ์์ ๋ง๋ ๊ฒฝ์ฐ ์ฌ์ ์ ์ธ์ฐ๊ณ ์์ง ์์๋ ํ ์ ์๋ ๊ฐ๋ฅ์ฑ์ด ๋์ ๋ฌธ์ ์ ํ์ง์ญ ์ต์ ํด(Local Optimum) โ ์ ์ญ ์ต์ ํด(Global Optimum) ๋ณด์ฅ ๊ฐ๋ฅํด์ผ ํจํ์์ ์ ํ(Greedy Choice)๊ณผ ์ต์ ๋ถ๋ถ ๊ตฌ์กฐ(Optimal Substructure) ๋ง์กฑโ
๋์ ํ๋ก๊ทธ๋๋ฐ(Dynamic Programming)๊ณผ ์ฐจ์ด..
'Algorithm/์๊ณ ๋ฆฌ์ฆ' ์นดํ
๊ณ ๋ฆฌ์ ๊ธ ๋ชฉ๋ก
๋จ์ถํค
๋ด ๋ธ๋ก๊ทธ
๋ด ๋ธ๋ก๊ทธ - ๊ด๋ฆฌ์ ํ ์ ํ |
Q
Q
|
์ ๊ธ ์ฐ๊ธฐ |
W
W
|
๋ธ๋ก๊ทธ ๊ฒ์๊ธ
๊ธ ์์ (๊ถํ ์๋ ๊ฒฝ์ฐ) |
E
E
|
๋๊ธ ์์ญ์ผ๋ก ์ด๋ |
C
C
|
๋ชจ๋ ์์ญ
์ด ํ์ด์ง์ URL ๋ณต์ฌ |
S
S
|
๋งจ ์๋ก ์ด๋ |
T
T
|
ํฐ์คํ ๋ฆฌ ํ ์ด๋ |
H
H
|
๋จ์ถํค ์๋ด |
Shift + /
โง + /
|
* ๋จ์ถํค๋ ํ๊ธ/์๋ฌธ ๋์๋ฌธ์๋ก ์ด์ฉ ๊ฐ๋ฅํ๋ฉฐ, ํฐ์คํ ๋ฆฌ ๊ธฐ๋ณธ ๋๋ฉ์ธ์์๋ง ๋์ํฉ๋๋ค.