[์๊ณ ๋ฆฌ์ฆ ์ ๋ฆฌ] ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ(Greedy Alogorithm)
Greedy Algorithm
ํ์ ์๊ณ ๋ฆฌ์ฆ์ด๋ผ๊ณ ๋ถ๋ฅด๊ธฐ๋ ํ๋ ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋ฌธ์ ๋ฅผ ๋จ๊ณ์ ์ผ๋ก ํด๊ฒฐํ๋ฉด์, ํ ๋จ๊ณ๋ง๋ค ๊ทธ ์๊ฐ์ ์ต์ ์ solution ์ด๋ผ๊ณ ์๊ฐ๋๋ solution์ ์ ํํด์ ์ต์ข ์ ์ธ solution์ ์ฐพ์๊ฐ๋ ์๊ณ ๋ฆฌ์ฆ ์ ๋ต์ด๋ค.
Local Optimum and Global Optimum Solution
์ด๋ ์ด๋ค ๋จ๊ณ์์ ๋ณด์ด๋ ์ต์ ์ solution์ local optimum ์ด๋ผ๊ณ ํ๊ณ , ์ ์ฒด ๋ฌธ์ ์ ๋ํ ์ต์ ์ solution์ global optimum ์ด๋ผ๊ณ ํ๋ค. ํ์ง๋ง ๋ชจ๋ ๋ฌธ์ ๊ฐ local optimum์ ํตํด global optimum์ ๋ง๋ค ์ ์์ง๋ ์๋ค. ์ฐ๋ฆฌ๊ฐ ์ธ์์ ์ด๋ฉด์ ํ์ฌ ์๊ฐ์ ์ต์ ์ ์ ํ์ ํ๋ค๊ณ ์๊ฐํ์ง๋ง ๋์ค์ ์ง๋๊ณ ๋ณด๋ฉด ๊ทธ๊ฒ ์ต์ ์ด ์๋ ๋๊ฐ ๋ง์ง ์์๊ฐ..
Coin Change Problem
๊ฐ์ฅ ๊ฐ๋จํ๊ฒ ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ ์ฉํ ์ ์๋ ๋ฌธ์ ๊ฐ Coin Exchange Problem ์ด๋ค. ์ด๋ค ๊ฐ๊ฒ์์ ๊ฑฐ์ค๋ฆ ๋์ ๊ฑด๋ค์ค๋ค๊ณ ํ ๋, ๊ทธ ๊ฐ๊ฒ๋ ์ต์ํ์ ๋์ ๊ฐฏ์๋ก ๊ฑฐ์ค๋ฆ ๋์ ์ฃผ๊ธฐ๋ฅผ ์ํ ๊ฒ์ด๋ค.
๊ทธ๋ผ ์ต์ํ์ ๋์ ๋ง ์ฌ์ฉํ๋ฉด์ ๊ฑฐ์ค๋ฆ๋์ ์ค ์ ์๋ ๋ฐฉ๋ฒ์ด ๋ฌด์์ด ์์๊น? ๋ค์ ์์๋ฅผ ๋ณด์.
- ๋ฌธ์ : ์ฐ๋ฆฌ๊ฐ ๊ฐ์ง๊ณ ์๋ ๋์ ์ 0.5, 0.25, 0.1, 0.05, 0.01 ๋ผ๊ณ ํ์. ๊ฑฐ์ฌ๋ฌ์ค์ผ ํ ๋์ด 0.74์ผ ๋ ๋์ ๊ฐฏ์๋ฅผ ์ต์ํ์ผ๋ก ์ฌ์ฉํ๋ฉด์ ์ค ์ ์๋ ๋ฐฉ๋ฒ์?
- ํด๊ฒฐ๋ฐฉ๋ฒ: ๋๋ฌด๋ ์์์ ์ผ๋ก ์๊ฐํด๋ณด๋ฉด ๊ทธ๋ฅ ๊ฐ์ฅ ๊ฐ์ด ํฐ ๋์ ์ ์ฐ์ ์ ์ผ๋ก ์ฌ์ฉํ๋ฉด ๋๋ค. ๋ฐ๋ผ์ 0.5 ํ ๊ฐ, 0.1 ๋ ๊ฐ, 0.01 ๋ค ๊ฐ๋ฅผ ์ฌ์ฉํ๋ฉด ์ต์ํ์ ๊ฐฏ์๋ก ํด๊ฒฐํ ์ ์์ ๊ฒ์ด๋ค.
์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ ์ฉํ ์์ด๋ค. 0.5 ์ง๋ฆฌ ๋์ ์ ์ ํํ์ ๋ ์ต์ ์ ๊ฒฝ์ฐ๋ 0.5 ์ง๋ฆฌ ํ๋๋ฅผ ๋ด๋ ๊ฒ์ด๋ค. ๊ทธ๋ฆฌ๊ณ ๋จ์ ๋์ ๊ฑฐ์ฌ๋ฌ์ค ๋ 0.25 ์์ ์ค ์ ์๋ ์ต์ ์ ๊ฒฝ์ฐ๋ 0, 0.1์์๋ 2 ... ์ด๋ฐ์์ผ๋ก ๋จ๊ณ๋ง๋ค ์ต์ ์ ๊ฒฝ์ฐ๋ฅผ ์ ํํ๋ค๋ณด๋ฉด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ฒ ๋๋ค.
Activity Selection Problem
๋์ ๊ตํ ๋ฌธ์ ๋ ๋๋ฌด ์ฌ์ ์ผ๋๊น, ์ข ๋ ๋ณต์กํ ๋ฌธ์ ๋ฅผ ์ดํด๋ณด์. Activity Selection Problem ์ ์ด๋ค ์ฌ๋ฌ ํ๋๋ค์ ์์ ์๊ฐ๊ณผ ๋๋๋ ์๊ฐ์ด ์ฃผ์ด์ ธ ์์ ๋, ์ฃผ์ด์ง ์ด๋ค ์๊ฐ ์์ ํ ์ ์๋ ํ๋์ ์ต๋ํ ๋ง์ด ๋ฐฐ์นํ๋ ๋ฐฉ๋ฒ์ ์ฐพ๋ ๋ฌธ์ ์ด๋ค.
Theorem
๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ ์ฉํ๊ธฐ ์ํด์๋ ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ์์ ํ๋ ๊ฒ ์ฒ๋ผ, ์ด ๋ฌธ์ ๊ฐ optimal substructure๋ฅผ ๊ฐ์ง๊ณ ์๋์ง ๋จผ์ ํ์ธํ๋ ๊ณผ์ ์ ๊ฑฐ์ณ์ผํ๋ค.
- ์ฐ๋ฆฌ์๊ฒ ํ๋๋ค์ ์งํฉ์ธ Sij ๊ฐ ์๋ค๊ณ ํ๊ณ , ํด๋น ์งํฉ์ ๊ณต์งํฉ์ด ์๋๋ผ๊ณ ๊ฐ์ ํด๋ณด์. Sij ์ i๋ S ์ ์ฒด์ ๋ํ ์์์๊ฐ, j๋ S ์ ์ฒด์ ๋ํ ๋๋๋ ์๊ฐ์ ์๋ฏธํ๋ค๊ณ ํ์.
- am ์ ์ค์ ํ๊ณ ์ด ๋ณ์๊ฐ Sij ์์ ์๋ ํ๋๋ค์ ์ต๋ํ ๋ง์ด ๋ฐฐ์นํ ๊ฐฏ์ ๋ผ๊ณ ํ๋ค๋ฉด,
- Sim, ์ฆ ์ต๋ํ ๋ง์ด ๋ฐฐ์นํ์ ๋์ ์์์๊ฐ๊ณผ S์ ์์ ์๊ฐ ์ฌ์ด์๋ ์ด๋ค ํ๋๋ ์กด์ฌํ์ง ์์ ๊ฒ์ด๋ค. ์๋ํ๋ฉด, ์ฐ๋ฆฌ๋ ์ด๋ฏธ am ์ ์ต๋ ๊ฐฏ์๋ก ์ค์ ํ๊ธฐ ๋๋ฌธ์ด๋ค.
- ๋ฐ๋ผ์, ์ด๋ค ์๊ฐ์ ์ต์ ์ ๋ฐฐ์น์ธ am ์ ์ฐพ๋ ๋ค๋ฉด ์ ์ฒด ๋ฌธ์ ์๋ Sij ๋ am์ด ๋๋๋ ์๊ฐ๋ถํฐ S๊ฐ ๋๋๋ ์๊ฐ ์ฌ์ด์ ์๋ ์ต๋ ๋ฐฐ์น๋ฅผ ์ฐพ๋ ๋ฌธ์ ๋ก ๋ฌธ์ ๊ฐ ์์์ง๊ฒ ๋๋ค. ์ฆ ์ด ๋ฌธ์ ๋ optimal substructure ๋ฅผ ๊ฐ์ง๊ฒ ๋๋ค๋ ๋ป์ด๋ค.
Solution
๊ทธ๋ ๋ค๋ฉด ์ด๋ค ๊ตฌ๊ฐ์์ ์ต๋ํ์ผ๋ก ํ๋์ ๋ง์ด ๋ฐฐ์นํ ์ ์๋ ๋ฐฉ๋ฒ์ ์ฐพ์๋ณด์. ๋์ ๊ตํ๋ฌธ์ ์ ๋น์ทํ ๋ฐฉ๋ฒ์ผ๋ก ์ ๊ทผํ ์ ์๋ค. ๋ฌธ์ ๋ฅผ ๊ฐ์ฅ ๋ substructure๊น์ง ์ชผ๊ฐ์ด๋ณด๋ฉด ๊ฒฐ๊ตญ ์ ์ผ ๋ง์ง๋ง์๋ ์ด์ ํ๋๊ณผ ์ด์ด๋ถ์ผ ์ ์๋ ํ๋ ์ค์์ ๋๋๋ ์๊ฐ์ด ๊ฐ์ฅ ์งง์ ํ๋์ด ๋ ๊ฒ์ด๋ค. ๋๋๋ ์๊ฐ์ด ๊ฐ์ฅ ๋น ๋ฅธ ํ๋์ ์์, ๊ทธ๋ฆฌ๊ณ ๊ทธ ๋๋๋ ์๊ฐ ์ดํ์ ๊ฐ์ฅ ๋นจ๋ฆฌ ์์ํ ์ ์๋ ํ๋ ์ค ๋๋๋ ์๊ฐ์ด ๊ฐ์ฅ ๋น ๋ฅธ ํ๋์ ๊ณจ๋ผ ๋ฐ๋ก ์์ํ๋ฉด ์ต๋ํ ๋ง์ ํ๋๋ค์ ๋์ด ํ ์ ์์ ๊ฒ์ด๋ค. ๋ฐ๋ผ์ ์ฐ๋ฆฌ๋ ํ ํ๋์ด ๋๋ฌ์ ๋ ๊ณ ๋ฅผ ์ ์๋ ์ต์ ์ ํ๋(local optimum)์ ๊ณ ๋ฅด๋ฉด ๋๋ ๊ฒ์ด๋ค.
์ด๋ฅผ ์ํด์ ์ผ๋ฐ์ ์ผ๋ก ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ํด์ key๊ฐ ๋๋ ๊ฐ, Activity Selection Problem ๊ฐ์ ๋ฌธ์ ์์๋ ๋๋๋ ์๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ ์ฒด๋ฅผ ์ํ ํ ํ์ ํ๋๋ค์ ์ฐพ์๊ฐ๋ค.
Example Problem
[๋ฐฑ์ค ์๊ณ ๋ฆฌ์ฆ] ์๊ณ ๋ฆฌ์ฆ์ 1931๋ฒ์ ํ์์ค์ ๋ฐฐ์ ํ๋ ๋ฌธ์ ๊ฐ ์๋ค. ๋ค๋ฅธ ํฌ์คํธ์์ ์ ๋ฆฌํ๋ ๋ถ๋ถ์ด๋ ๊ทธ๋๋ก ์ด๊ณณ์ ๋ง๋ถ์ด๋๋ก ํ๊ฒ ๋ค.
๋ฌธ์
๋ฌธ์
ํ ๊ฐ์ ํ์์ค์ด ์๋๋ฐ ์ด๋ฅผ ์ฌ์ฉํ๊ณ ์ ํ๋ N๊ฐ์ ํ์์ ๋ํ์ฌ ํ์์ค ์ฌ์ฉํ๋ฅผ ๋ง๋ค๋ ค๊ณ ํ๋ค. ๊ฐ ํ์ I์ ๋ํด ์์์๊ฐ๊ณผ ๋๋๋ ์๊ฐ์ด ์ฃผ์ด์ ธ ์๊ณ , ๊ฐ ํ์๊ฐ ๊ฒน์น์ง ์๊ฒ ํ๋ฉด์ ํ์์ค์ ์ฌ์ฉํ ์ ์๋ ํ์์ ์ต๋ ๊ฐ์๋ฅผ ์ฐพ์๋ณด์. ๋จ, ํ์๋ ํ๋ฒ ์์ํ๋ฉด ์ค๊ฐ์ ์ค๋จ๋ ์ ์์ผ๋ฉฐ ํ ํ์๊ฐ ๋๋๋ ๊ฒ๊ณผ ๋์์ ๋ค์ ํ์๊ฐ ์์๋ ์ ์๋ค. ํ์์ ์์์๊ฐ๊ณผ ๋๋๋ ์๊ฐ์ด ๊ฐ์ ์๋ ์๋ค. ์ด ๊ฒฝ์ฐ์๋ ์์ํ์๋ง์ ๋๋๋ ๊ฒ์ผ๋ก ์๊ฐํ๋ฉด ๋๋ค.
์
๋ ฅ
์ฒซ์งธ ์ค์ ํ์์ ์ N(1 ≤ N ≤ 100,000)์ด ์ฃผ์ด์ง๋ค. ๋์งธ ์ค๋ถํฐ N+1 ์ค๊น์ง ๊ฐ ํ์์ ์ ๋ณด๊ฐ ์ฃผ์ด์ง๋๋ฐ ์ด๊ฒ์ ๊ณต๋ฐฑ์ ์ฌ์ด์ ๋๊ณ ํ์์ ์์์๊ฐ๊ณผ ๋๋๋ ์๊ฐ์ด ์ฃผ์ด์ง๋ค. ์์ ์๊ฐ๊ณผ ๋๋๋ ์๊ฐ์ 231-1๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์ ๋๋ 0์ด๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ์ต๋ ์ฌ์ฉํ ์ ์๋ ํ์์ ์ต๋ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ค.
ํ์ด
ํ์ ์๊ฐ์ ์ต๋ํ ์ด์ดํ ๋ฐฐ์ ํ๋ ค๋ฉด, ๋๋๋ ์๊ฐ์ด ์ ์ผ ๋น ๋ฅธ ์์๋๋ก ์ฌ์ฉ์๊ฐ์ ๋ฐ๋ฅ๋ฐ๋ฅ ๋ถ์ฌ์ฃผ๋ฉด ๋๋ค. ํ์ฌ๊ธฐ์ค์ผ๋ก ๋๋๋ ์๊ฐ์ด ์ ์ผ ๋น ๋ฅธ ๊ตฌ์ฑ์ ์ ํํ๋ฉด ์ต๋ ๊ฐฏ์๋ฅผ ๋ง์ถ ์ ์์ ๊ฒ์ด๋ค.
ํ๋์ ์ต์ ์ ์ ํ์ ํ๊ณ ๋๋ฉด ๋จ์ ์๊ฐ๋ค ์์์ ๋ ์ต์ ์ ๊ตฌ์ฑ์ ์ ํํด์ผ๋๋ ๋ฌธ์ ๊ฐ ๋๋ ๋ฌธ์ ์ ํฌ๊ธฐ๊ฐ ๊ณ์ ์ค์ด๋ค๊ฒ ๋๋ค.
๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ฃผ์ด์ง ๋ฐฐ์ด์ ๋ฏธ๋ฆฌ ์ ๋ ฌํด๋๊ณ ์ํํ๋ ๋ฐฉ๋ฒ์ผ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋๋ฐ, ์ด๋ฒ ๋ฌธ์ ์์ ์๊ฐํ์ด์ผํ๋ ๋ถ๋ถ์ ๋ฐฐ์ด์ ์ ๋ ฌํ ๋, ๋๋๋ ์๊ฐ์ด ์ฌ๋ฌ๊ฐ๊ฐ ๊ฒน์น ๊ฒฝ์ฐ ์ต์ ์ ๊ฐ์ ์ป์ง ๋ชปํ๋ค๋ ๊ฒ์ด๋ค.
index | 0 | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|---|
start time | 1 | 2 | 5 | 4 | 7 | 8 |
finish time | 1 | 4 | 7 | 7 | 7 | 8 |
๋๋๋ ์๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ์ ํ์ ๋, ๋ค์๊ณผ ๊ฐ์ด ์ ๋ ฌ๋์๋ค๊ณ ํ์, ์ด ๊ตฌ์ฑ์์ ํ์์ค์ ๋ฐฐ์ ํด๋ณด๋ฉด,
1๋ฒ ๊ตฌ์ฑ์ด ๋๋์๋ง์ ์์ํ ์ ์๋ ์ ์ผ ๋๋๋ ์๊ฐ์ด ๋น ๋ฅธ ๊ตฌ์ฑ์ธ 2๋ฒ์ ์ ํ,
3๋ฒ์ ๋๋๋ ์๊ฐ๊ณผ ์์ํ๋ ์๊ฐ์ด ์๋ง๊ธฐ ๋๋ฌธ์ ๊ฑด๋๋ฐ๊ณ 4๋ฒ์ ์ ํ,
๋ง์ง๋ง์ผ๋ก 5๋ฒ์ ์ ํํ๊ฒ ๋๋ค.
๋ฐ๋ผ์ ๋ฐฐ์ ํ ์ ์๋ ํ์์ค์ ์ต๋ ๊ฐฏ์๊ฐ ์ด 5๊ฐ๊ฐ ๋๋๋ฐ, ์ฌ์ค์ ๊ทธ๋ ์ง ์๋ค. 2๋ฒ ์ธ๋ฑ์ค์ 3๋ฒ์ธ๋ฑ์ค๋ฅผ ๊ต์ฒดํด์ฃผ๋ฉด ๋ฐฐ์ ํ ์ ์๋ ํ์๊ฐ ํ๋ ๋์ด๋๊ธฐ ๋๋ฌธ์ด๋ค.
index | 0 | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|---|
start time | 1 | 2 | 4 | 5 | 7 | 8 |
finish time | 1 | 4 | 7 | 7 | 7 | 8 |
์ ๊ตฌ์ฑ์ผ๋ก ๋ฐฐ์ด์ด ์ ๋ ฌ๋๋ค๋ฉด 6๊ฐ์ ํ์์ค์ ๋ฐฐ์ ํ ์ ์๊ฒ๋๋ค. ๋ฐ๋ผ์ ๋๋๋ ์๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ ๋, ๊ฐ์ ๊ฐ์ด ๋์ค๋ฉด ์์์๊ฐ์ ๋น๊ตํด์ ๋ ๋น ๋ฅธ ์๊ฐ์ ์์ ๋์ด์ผ ํ๋ค.
์ด ๋ฌธ์ ๋ฅผ ํ ๋๋ pair, vector ๋ฅผ ์ด์ฉํด์ ํ์์๊ฐ์ ์ง์ง์ด์ ๋ด๊ณ ์ ๋ ฌ์ ๊ฑฐ์น ๋ค for๋ฌธ์ผ๋ก ์ํํ๋ ๋ฐฉ์์ ์ฌ์ฉํ๋ค.
std::sort๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ์ง์ํ๋ ์๋๊ฐ n log n ์ด๊ธฐ ๋๋ฌธ์ ์ต์ ์ ๊ฒฝ์ฐ์๋ ๋ฐฐ์ด ์ ์ฒด๋ฅผ ์ํํ๋ ์๋๊ฐ n ์ด๊ธฐ ๋๋ฌธ์ O(nlogn)์ผ๋ก ํด๊ฒฐํ ์ ์๋ค.
์ฝ๋
#include <cstdio>
#include <algorithm>
#include <vector>
#include <utility>
using namespace std;
bool pairSecondLess(const pair<int, int> &a, const pair<int, int> &b)
{
if (a.second == b.second)
{
return a.first < b.first; // second ๊ฐ ๊ฐ์ผ๋ฉด first๊ฐ ์์ ๋์ด ๋ ์๋ค!
}
return (a.second < b.second);
}
int main()
{
int N;
scanf("%d", &N);
vector<pair<int, int>> greedy;
for (int i = 0; i < N; i++)
{
int s, f;
scanf("%d %d", &s, &f);
greedy.push_back(make_pair(s, f));
}
sort(greedy.begin(), greedy.end(), pairSecondLess); // ์ ๋ ฌํ ๋ ์ธ์๋ก ์์์ ์ ์ํ ํจ์๋ฅผ ์ค๋ค.
vector<pair<int, int>> v;
v.push_back(greedy[0]); // ์ ์ผ ์ฒ์์ ๋๋๋ ์๊ฐ์ด ์ ์ผ ๋น ๋ฅธ ๊ตฌ์ฑ์ด ๋ค์ด๊ฐ๋ค.
for (int i = 1; i < greedy.size(); i++)
{
if (v.back().second <= greedy[i].first) // ๊ฐ์ฅ ๋ง์ง๋ง ์ต์ ์ ๊ตฌ์ฑ๊ณผ ๋น๊ต
{
v.push_back(greedy[i]); // ํ์ฌ ์ต์ ์ ๋ฐฐ์ ์ด ๊ฐ์ง ๋๋๋ ์๊ฐ ์ดํ์ ์์ํ ์ ์๋ ์๊ฐ ์ค ๋๋๋ ์๊ฐ์ด ์ ์ผ ๋น ๋ฅธ ๊ตฌ์ฑ์ ๋ฃ์ด์ค๋ค.
}
}
printf("%ld", v.size());
}
'๐ฎ ์จ-์์ค > ๐ ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๊ณ ๋ฆฌ์ฆ ์ ๋ฆฌ] ๋ฐฐ๋ญ ๋ฌธ์ (Knapsack Problem) (7) | 2021.07.17 |
---|---|
[์๊ณ ๋ฆฌ์ฆ ์ ๋ฆฌ] ํํ๋ง ์ฝ๋(Huffman Code Problem) (0) | 2021.07.17 |
[์๊ณ ๋ฆฌ์ฆ ์ ๋ฆฌ] ์ต์ฅ ๊ณตํต ๋ถ๋ถ ์์ด(LCS) (0) | 2021.07.17 |
[์๊ณ ๋ฆฌ์ฆ ์ ๋ฆฌ] ํ๋ ฌ ๊ณฑ์ ๋ฌธ์ (Matrix Chain Multiplication) (0) | 2021.07.17 |
[์๊ณ ๋ฆฌ์ฆ ์ ๋ฆฌ] ์ต์ฅ ์ฆ๊ฐ ๋ถ๋ถ ์์ด(LIS) (0) | 2021.07.17 |
๋๊ธ
์ด ๊ธ ๊ณต์ ํ๊ธฐ
-
๊ตฌ๋
ํ๊ธฐ
๊ตฌ๋ ํ๊ธฐ
-
์นด์นด์คํก
์นด์นด์คํก
-
๋ผ์ธ
๋ผ์ธ
-
ํธ์ํฐ
ํธ์ํฐ
-
Facebook
Facebook
-
์นด์นด์ค์คํ ๋ฆฌ
์นด์นด์ค์คํ ๋ฆฌ
-
๋ฐด๋
๋ฐด๋
-
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
-
Pocket
Pocket
-
Evernote
Evernote