1. ์ ์
์์์ธ ๊ฐ์ค์น๋ง ์๋ ๊ทธ๋ํ
์์ ์์์ ์ $v_{start}$๋ผ๊ณ ํ ๋, $v_{start}$์์ ๋ชจ๋ ์ ์ ๊น์ง์ ์ต๋จ ๊ฒฝ๋ก
๋ฅผ ๊ตฌํ๋ ์๊ณ ๋ฆฌ์ฆ
์ต๋จ ๊ฒฝ๋ก
:
A โ B ์ ์ต๋จ๊ฒฝ๋ก๋ A์์ B๊น์ง ๊ฐ๋ ๊ฒฝ๋ก ์ค ์ต์ ๋น์ฉ์ ์ฌ์ฉํ๋ ๊ฒฝ๋ก๋ฅผ ์๋ฏธํ๋ค.
๊ฐ์ค์น๊ฐ ์๋ ๊ทธ๋ํ์์๋ ๊ฐ์ ์ ์๊ฐ ์ ์์๋ก ์ต๋จ ๊ฒฝ๋ก๊ฐ ๋ ๊ฒ์ด๊ณ , ๊ฐ์ค์น๊ฐ ์๋ ๊ทธ๋ํ์์๋ ๊ฐ์ค์น๋ฅผ ์๊ฒ ์ฌ์ฉํ ์๋ก ์ต๋จ ๊ฒฝ๋ก๊ฐ ๋ ๊ฒ์ด๋ค.
2. ์๋ฆฌ
KEY WORD
: GREEDY ALGORITHM
- 1๏ธโฃ ์์์ ์์ ๊ฐ ๋ ธ๋๊น์ง ๊ฑธ๋ฆฌ๋ ์ต์ ๊ฑฐ๋ฆฌ๋ฅผ ์ ์ฅํ๋ ๋ฐฐ์ด์ ๋ง๋ ๋ค. (์ต์ ๊ฑฐ๋ฆฌ DASH-BOARD)
- 2๏ธโฃ ํ ์์ ์์ ๋ฐฉ๋ฌธํ์ง ์์ ๋ ธ๋๋ค ์ค, ์์์ ์์ ๊ฐ์ฅ ์ต์ ๋น์ฉ์ผ๋ก ๊ฐ ์ ์๋ ๋ ธ๋(์ดํ A)๋ฅผ ๋งค๋ฒ ๊ณ ๋ฅธ๋ค.
- 3๏ธโฃ A์ ์ธ์ ํ ๋ ธ๋๋ค์ ๋ฐฉ๋ฌธํ๊ณ , ์ต์ ๊ฑฐ๋ฆฌ DASH-BOARD๋ฅผ ๋์ฑ ์ต์๊ฐ์ผ๋ก ๊ฐฑ์ ํ ์ ์๋ค๋ฉด ๊ฐฑ์ ํ๋ค.
- 4๏ธโฃ ์ ๊ณผ์ ์ ๋ชจ๋ ๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธํ ๋ ๊น์ง ๋ฐ๋ณตํ๋ค.
๊ณผ์ (2)์์ ์ฐ์ธ ๊ฒ์ด ๊ณง GREEDY ALGORITHM์ด๋ค. ๋งค๋ฒ ์ต์ ๋น์ฉ์ผ๋ก ๋ฐฉ๋ฌธ ๊ฐ๋ฅํ ๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธํ๋ ๊ฒ์ด ์ข ๊ตญ์ ๋ชจ๋ ๋ ธ๋๊น์ง์ ์ต์ ๋น์ฉ์ ๊ตฌํ๊ฒ ํด์ค๋ค. ์ ์ด๊ฒ์ด ๊ฐ๋ฅํ ๊น? ๊ณ์ํด์ ์ค๋ช ํ๊ฒ ๋ค.
(1) BFS๋ก๋ ๊ฐ์ค์น ์๋ ๊ทธ๋ํ์์ ์ต๋จ ๊ฒฝ๋ก๋ฅผ ๊ตฌํ์ง ๋ชปํ๋ ์ด์
BFS๋
- 1๏ธโฃ ์์์ ์ deque์ ๋ฃ๋๋ค. ์ด์ deque๊ฐ ๋น ๋๊น์ง ๋ฐ์ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค.
- 2๏ธโฃ deque์ front ๊ฐ์ ๋นผ๋ธ๋ค. ํด๋น ๋
ธ๋์ ์ธ์ ํ ๋
ธ๋๋ค์ ์ฐจ๋ก๋ก ํ์ธํ๋ค.
- 2๏ธโฃ-1 ๋ง์ฝ ๋ฐฉ๋ฌธํ์ง ์์ ๋
ธ๋๋ผ๋ฉด deque์ ๋ฃ๋๋ค.
(์ด์ deque์ ๋ฃ์ ๋ ธ๋๋ ๋ฐฉ๋ฌธ ์์ ์์ผ๋ก ๋ฐฉ๋ฌธ ์ฌ๋ถ ๋ฐฐ์ด์์ true๋ก ๊ฐ์ ๋ฐ๊พผ๋ค.)
- 2๏ธโฃ-1 ๋ง์ฝ ๋ฐฉ๋ฌธํ์ง ์์ ๋
ธ๋๋ผ๋ฉด deque์ ๋ฃ๋๋ค.
- 3๏ธโฃ ๋ชจ๋ ๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธํ ๋๊น์ง ๊ณผ์ 2๏ธโฃ๋ฅผ ๋ฐ๋ณตํ๋ค.
์ ๊ณผ์ ์ผ๋ก ์ด๋ฃจ์ด์ง๋ค.
ํด๋น ๋ฐฉ์์ ๊ฐ์ค์น๊ฐ ์์๋๋ ์์์ ์์ ๊ฐ๊น์ด ์์ผ๋ก ๋
ธ๋๋ฅผ ๋ฐฉ๋ฌธํ๋ฏ๋ก, ์ต๋จ ๊ฑฐ๋ฆฌ๊ฐ ๋ณด์ฅ๋๋ค.
ํ์ง๋ง ๊ฐ์ค์น๊ฐ ์์ ๊ฒฝ์ฐ, ๊ฒฝ์ ์ง ๋ฐฉ๋ฌธ์ ์ต์ ๋น์ฉ์ ์๋ชจํ๋ค๋ ๊ฒ์ ํ์ ํ ์ ์๊ธฐ์ ๋์ฐฉ์ง๊น์ง ์ต์ ๋น์ฉ์ ์ผ๋ค๋ ๊ฒ์ ํ์ ํ ์ ์๊ฒ ๋๋ค. ๋ฐ๋ผ์ ์ต๋จ ๊ฒฝ๋ก๋ฅผ ๊ตฌํ์ง ๋ชปํ๋ค.
BFS๋ก ํผ๋ค๋ฉด, ์ ๊ทธ๋ํ์์ ๋งจ ์ฒ์ B๋ฅผ ์ ํํ๊ณ , B์ ์ธ์ ํ ๋์ฐฉ์ง๋ฅผ deque์ ๋ฃ์์ผ๋ก์จ, ๊ณ์ฐ์ด ์ข ๋ฃ๋ ๊ฒ์ด๋ค. ์ด ๊ฒฝ์ฐ, BFS๊ฐ ๋ตํ ๋์ฐฉ์ง๊น์ง์ ์ต์ ๋น์ฉ์ 6์ด๋ค. ํ์ง๋ง,
์ถ๋ฐ์งโAโBโ๋์ฐฉ์ง๊ฐ ๋น์ฉ์ด 5์์ผ๋ก, ํด๋น BFS์ ๋ต์ ์ ๋ต์ด ์๋๋ค. ํ์ง๋ง BFS๋ ์ด๋ฏธ B๋ฅผ ๋ฐฉ๋ฌธํด๋ฒ๋ ธ๊ธฐ์ A โ B๋ก ๊ฐ ์๊ฐ ์๊ฒ ๋๋ค. ๋ฐ๋ผ์ ์ ๋ต์ ๊ตฌํ์ง ๋ชปํ๋ค.
(2) GREEDY๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฒฝ์ ์ง๊น์ง์ ์ต๋จ ๊ฑฐ๋ฆฌ๋ ๋ณด์ฅ๋จ
์ฐ๋ฆฌ๋ Greedy ์๊ณ ๋ฆฌ์ฆ์ ํ์ฉํด ํ ์์ , ์์์ ์์ ์ต์ ๋น์ฉ์ผ๋ก ๊ฐ ์ ์๋ ๋ ธ๋๋ฅผ ๋งค๋ฒ ๊ณ ๋ฅธ๋ค. ์ด๋ฌ๋ฉด ๋งค๋ฒ ์ต์ ๋น์ฉ์ผ๋ก ๊ฐ ์ ์๋ ๊ฒฝ์ ์ง๋ฅผ ๊ณ ๋ฅด๊ฒ ๋์ด ๋งจ ๋ง์ง๋ง ๊ณ์ฐ์ ์ต์ ๋น์ฉ์ผ๋ก ๊ฐ ์ ์๋ ๊ฒฝ์ ์ง๊ฐ ๊ณง ๋์ฐฉ์ง๊ฐ ๋์ด ๋ฌธ์ ๋ฅผ ํ ์ ์๋ ๊ฒ์ด๋ค.
์ด๋ฏธ ๋ฐฉ๋ฌธํ ๋ ธ๋๋ฅผ ๋์ค์ ๋ ์ต์ ๋น์ฉ์ผ๋ก ๊ฐ ์ ์๋ ๊ฒฝ์ฐ๋ ์์๊น? โจ
๋ค์ต์คํธ๋ผ์ ์กฐ๊ฑด ์ฒ๋ผ ๋ชจ๋ ๊ฐ์ค์น๊ฐ ์์๋ผ๋ฉด ๊ทธ๋ฐ ๊ฒฝ์ฐ๋ ์๋ค.
๋ง์ฝ ์ถ๋ฐ์ง์์ ๋ฐฉ๋ฌธํ ๋
ธ๋๋ก A
๋ฅผ ๊ณจ๋๋ค๋ฉด ์ฐ๋ฆฌ๋ 2 < i
์์ ์ ์ ์๋ค. ์๋ํ๋ฉด ๋ค์ต์คํธ๋ผ๋ฅผ ์ฌ์ฉํ๋ค๋ฉด ์ง๊ธ ๊ฐ ์ ์๋ ๋
ธ๋ ์ค ์ต์ ๋น์ฉ ๋
ธ๋๋ฅผ ๊ณจ๋์ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ด๋ค.
์ด๋ฏธ 2๋ณด๋ค i๊ฐ ํฐ๋ฐ K๋ฅผ ๋ํ๋ค๊ณ ํด์, i+K
< 2
๊ฐ ๋ ์ ์๋๊ฐ? ๋ถ๊ฐ๋ฅํ๋ค. ์๋ํ๋ฉด K > 0
์์ด ๋ณด์ฅ๋๊ธฐ ๋๋ฌธ์ด๋ค.
๋ฐ๋ผ์ GREEDY ALGORITHM
์ ํ์ฉํ๋ฉด ๋งค๋ฒ ์ต๋จ ๊ฒฝ๋ก ๊ฒฝ์ ์ง๋ฅผ ๊ณ ๋ฅผ ์ ์๊ฒ ๋๋ค. ์ด๋ ์์์ ์์ ๊ฐ ๊ฒฝ์ ์ง๊น์ง์ ์ต๋จ ๊ฑฐ๋ฆฌ๋ ๊ตฌํ ์ ์๊ฒ ๋๋ ๊ฒ์์ผ๋ก, ๊ฒฐ๊ตญ ์์์ ์์ ๋ชจ๋ ์ ์ ๊น์ง์ ์ต๋จ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ๋ ๊ฒ๊ณผ ๋ง์ฐฌ๊ฐ์ง๊ฐ ๋๋ค.
3. ๊ตฌํ
(0) ๊ตฌ์ฑ ์์
- $v_{start}$ : ์์์
dist []
: index = ๋ ธ๋ ๋ฒํธ, value = $v_{start}$์์ index ๋ฒํธ์ ๋ ธ๋๊น์ง ์ต๋จ ๊ฒฝ๋ก ๋น์ฉ์ ์ ์ฅ(์๋ฅผ ๋ค์ด, dist[5]๋ ์์์ ์์ ๋ ธ๋ 5๊น์ง ๊ฐ๋ ์ต๋จ ๊ฒฝ๋ก ๋น์ฉ์ ์ ์ฅํ๊ณ ์๋ค.)
(1) ๊ตฌํ ๊ณผ์
- a. $v_{start}$๋ฅผ ์ ์ ํ๋ค.
- b. ํ ์์ ์์ dist[]๋ฅผ ๋ดค์ ๋, ๋ฐฉ๋ฌธํ์ง ์์ ๋
ธ๋ ์ค $v_{start}$์์ ์ต์ ๋น์ฉ์ผ๋ก ๊ฐ ์ ์๋ ๋
ธ๋๋ฅผ ์ ํํ๋ค. (์ด๋ฅผ ๋
ธ๋
A
๋ผ ํ๊ฒ ๋ค.) - c.
A
์ ์ธ์ ํ ๋ ธ๋๋ค์ ๋ชจ๋ ํ์ธํ๋ค. - d.
A
์ ์ธ์ ํ ๋ ธ๋ ์ค ํ๋๋ฅผB
๋ผ๊ณ ํด๋ณด์,- d-1.
dist[B]
>dist[A] + A โ B์ ๋น์ฉ
: dist[B]๋ฅผ dist[A] + A โ B ๋น์ฉ์ผ๋ก ์ต์ ํ - d-2.
dist[B]
<=dist[A] + A โ B์ ๋น์ฉ
: ๊ทธ๋ฅ ๋์ด๊ฐ๋ค.
- d-1.
- e. ๊ณผ์
b
์์ ๋ชจ๋ ๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธํ ๋๊น์ง b โฟ d๊น์ง์ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค.
dist [] ์ด๊ธฐํ ํ์โจ
๊ณ์ฐ์ ์ํด์ dist์ ๋ชจ๋ ์์๋ INF(๊ฐ์ ๊ฐ์ค์น ์ค ์ต๋๊ฐ + 1), ์์์ ์ 0์ผ๋ก ๊ฐฑ์ ํด์ผ ํ๋ค.
์๋ํ๋ฉด, ๋ฐฐ์ด์ ๊ธฐ๋ณธ ์ด๊ธฐํ ๊ฐ์ 0์์ผ๋ก, ํญ์ ๊ทธ๋ ๊ทธ๋ dist[] ์ค ์ต์๊ฐ์ ๊ณจ๋ผ ์ฌ์ฉํด์ผํ๋ ๋ค์ต์คํธ๋ผ์ ๊ณ์ฐ์ ๋ฐฉํด๊ฐ ๋๋ค. ๋ํ ์์์ ์ 0์ผ๋ก ๋์ด์ ํญ์ ์ต์ด๋ก ์ ํํ๋ dist ์ต์๊ฐ์ด ๋ ์ ์๋๋ก ์กฐ์นํด์ผ ํ๋ค.
๊ณผ์ d-1์ ๋ํ ํด์ค โจ
dist[B]
> dist[A] + A โ B์ ๋น์ฉ
์ ์๋ฏธ๋ 'ํ์ฌ๊น์ง ์๊ณ ์๋ $v\{start}$์์ ๋
ธ๋ B
๊น์ง์ ์ต์ ๋น์ฉ๋ณด๋ค, $v_{start}$์์ *๋
ธ๋ A
๋ฅผ ๊ฒฝ์ ํด B๋ก ๊ฐ๋ ๋น์ฉ์ด ๋ ์๋ค.*'_๋ ์๋ฏธ์ด๋ค.
4. ์์
๋ค์๊ณผ ๊ฐ์ ๊ทธ๋ํ์์ ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ์ ์ด๋ค๊ณ ๊ฐ์ ํด๋ณด์. ์์ ๋ ธ๋๋ 1์ด๊ณ , ์ฐ๋ฆฌ๊ฐ ๊ฐ์ ์ป๊ณ ์ถ์ ๋ชฉํ ๋ ธ๋๋ 6์ด๋ค.
์์ ๋ ธ๋์ ๋ํด์ ๊ฑฐ๋ฆฌ ๋ฐฉ๋ฌธ ์ฒ๋ฆฌ ๋ฐ ๊ฑฐ๋ฆฌ ๋ฐฐ์ด์ ๊ฐ์ 0์ผ๋ก ์ธํ ํ๋ค. (์์์์๋ ๋ ธ๋์์ผ๋ก ์์น ์ ๋ฐฉ๋ฌธ์ผ๋ก ๊ฐ์ฃผํ๋ค.)
๋ค์๊ณผ ๊ฐ์ด 1๋ฒ์ ์ธ์ ๋
ธ๋์ธ 2,3์ด ๊ฐ์ ์ต์ ํ ํ๋ค. ๋ฐฉ๋ฌธํ์ง ์์ ๋
ธ๋ ์ค์ ๊ฐ์ฅ ๊ฑฐ๋ฆฌ ๋ฐฐ์ด ๊ฐ์ด ์์ (์์ ๋
ธ๋์์ ๊ฐ ์ ์๋ ์ต๋จ ๊ฒฝ๋ก์ธ) ๊ฐ์ ๋ฌด์์ธ๊ฐ? ๋ต์ ๋
ธ๋ 3
์ด๋ค.
๊ทธ๋ผ ์ด์ 3์ ์
์ฅ์์ ๊ฑฐ๋ฆฌ๋ฐฐ์ด์ ๊ฐฑ์ ํด๋ณด์. ๋ฐฉ๋ฌธ ๋
ธ๋ ์ ์ธํ๊ณ 3์์ ๊ฐ ์ ์๋ ๋
ธ๋๋ค์ 2์ 4๋ฒ ๋
ธ๋์ด๋ค.
2๋ฒ์ ๊ฒฝ์ฐ๋ฅผ ์๊ฐํด๋ณด๋ฉด, 1 โ2 ์ 1โ3โ2 ์ค ์ต๋จ ๊ฑฐ๋ฆฌ๊ฐ ๋ ์งง์ ๋น์ฉ์ ํํ๊ฒ ๋ ๊ฒ์ด๋ค.
2๋ฒ ๋ ธ๋๋ ์๋์ 3์ด๋ ๊ฐ์ด ๋ ์ต์๊ฐ์ด๋ผ์ ํํ์ ์ง ํ ๊ฒ์ด๋ค. ๋ค์์ผ๋ก 1,3์ ์ ์ธํ ๋ ธ๋ ์ค ์์ ๋ ธ๋์์ ๊ฐ์ฅ ์ต๋จ์ผ๋ก ๊ฐ ์ ์๋ ๋ ธ๋๋ 2๋ฒ์์ผ๋ก 2๋ฒ์ ์ ํํ๋ค.
๋ฐฉ๋ฌธํ์ง ์๋ ๋ ธ๋๋ค์ ๋ํ ๊ฐฑ์ ์ ํด๋ณด๋ฉด, 4๋ฒ ๋ ธ๋๋ ์ด์ ์ ๊ฒฝ๋ก๋ณด๋ค ํ์ฌ 2๋ฒ ๋ ธ๋๋ฅผ ํตํ ๊ฒฝ๋ก๊ฐ ์ต๋จ ๊ฒฝ๋ก๋ผ ๊ฐฑ์ ๋๋ ๊ฒ์ ๋ณผ ์ ์๋ค. (2์์ 3๋ฒ ๋ ธ๋๋ฅผ ๊ฐฑ์ ํ๋ ค๊ณ ํด๋, ์ต๋จ ๊ฒฝ๋ก๊ฐ ์๋๋ฏ๋ก ๊ฐฑ์ ํ ํ์๊ฐ ์๋ค. - ์ด๋ฏธ ๋ฐฉ๋ฌธํ ๋ ธ๋๋ค์ ๋ฐฉ๋ฌธ ํ ์ ๋ ๊ฐ์ด ๊ฐฑ์ ๋์ง ์๋๋ค! ๊ทธ ์ด์ ๋ ๋ค์ ์ฅ์์ ์ค๋ช ํ๊ฒ ๋ค.)
์ด์ ๊ทธ๋ฆผ์ผ๋ก๋ง ์งํํ๊ฒ ๋ค.
๋์ฐฉ ์ ์ ๋ฐฉ๋ฌธ์ ๋ง์น๋ ์๊ฐ ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ์ ๋๋๋ค. 1โ6 ์ต๋จ ๊ฒฝ๋ก ๋น์ฉ์ 8์ด๋ค.