๊ทผ๋ฐ ์ด๊ฑฐ ๋ด๊ฐ ์๋ชป ์ดํดํ๊ฒ ์๋๋ผ๋ฉด ์ ์ A๋ถํฐ G๊น์ง ์๋ ๋งต์์ A - D ๊น์ง๋ง์ ์ต๋จ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ์ฐํ๊ณ ์ถ์ด๋ G(๋ชจ๋ ์ ์ )๊น์ง ๋ค ๊ณ์ฐํด์ผ ๋ต์ ์ ์ ์๋ ์๊ณ ๋ฆฌ์ฆ ๊ฐ์๋ฐ ๋ง์?
์ต์๊ฑฐ๋ฆฌ ๊ทธ๋ํ๋ฅผ ๋๋ ค๊ฐ๋ ์์ด๋ผ์ ๋ณ๋ค๋ฅธ๊ฑธ ์ํ๋ฉด ๋ชฉ์ ์ง์ ๋๋ฌํ๋ ์๊ฐ ๋๋์ง ์๋?
์ค๋ช ์ ๋ณด๋ฉด ์ ์ ์ด ๋ค์ด์๋ ํ๊ฐ ๋น์์ ธ์ผ ๋์ด๋ผ๋๋ฐ
๋ด๊ฐ ์ฐฉ๊ฐํ๋๋ด ์ต์ ์ ์ฅ ํธ๋ฆฌ์ชฝ ๋ก์ง์ด๋ ํค๊น๋ ธ๋ค
ํด๋น ๋๊ธ์ ์ญ์ ๋์์ต๋๋ค.
์ค๋ช ์ ๋ณด๋ฉด ์ ์ ์ด ๋ค์ด์๋ ํ๊ฐ ๋น์์ ธ์ผ ๋์ด๋ผ๋๋ฐ
๊ทธ๋ฅ bfs์ ๊ฐ์ค์น๋ง ์ถ๊ฐ๋๊ฑฐ๋ผ ์๊ฐํ๋ฉด๋์ง ์์๊น์ถ์๋ฐ, ์ผ๋จ ๋ชฉ์ ์ง ์ฐพ์ผ๋ฉด ๋ฐ๋ก ๊ฑฐ๊ธฐ์ ํ์ ๋์ผ๊ป
์ค๋ช ์ ๋ณด๋ฉด ์ ์ ์ด ๋ค์ด์๋ ํ๊ฐ ๋น์์ ธ์ผ ๋์ด๋ผ๋๋ฐ
๊ทธ ๋ง์ง๋ง ๋ ธ๋๊ฐ ๋ชฉ์ ์ง๋ฉด ๋ง๊ฒ ์ง๋ง ์ ์ ์ด ๋ค์ด์๋ ํ๋ผ๋๊ฒ ๋ชฉ์ ์ง๊น์ง ๊ฒฝ๋ก๋ฅผ ๋งํ ๊ป
์ ์ด์ ๋ด๊ฐ ๋ฐฑ์ค์์ bfs๋ ๋ค์ต์คํธ๋ผ ๊ด๋ จ ๋ฌธ์ ๋ค ํ์ด๋ดค๋๋ฐ while(!q.empty()) ์์ ๊ฒฝ๋ก์ฐพ๋ ์ฝ๋ ๋ฃ์ด์ ๋ง์ฝ ๋ชฉ์ ์ง์ ๋๋ฌํ๋ค๋ฉด ๋ฐ๋ก ํ๊ฐ ๋น์์ง๋ฉด์ ํ์์ด ๋๋๋ฒ๋ฆฌ๋์์ผ๋ก ํ์์์ด
if(nx == x && ny == y) return vist[nx][ny]; ์ด๋ฐ์์ผ๋ก ํ๋๊ฑฐ๊ฐ์๋ฐ... ๋๋ 1๋ ์ ์ ํ์ด๋ณธ๊ฑฐ๋ผ ์ ๊ธฐ์ต์ ์๋๋ค. ์ํผ ์ ๊ถ๊ธํ๋ฉด ๋ฐฑ์ค๊ฐ์ ์ง์ ํ์ด๋ณด๋๊ฒ ๋์๋ ๋ฏ
ใ ใ ๊ทธ๋ฐ ์๊ณ ๋ฆฌ์ฆ์ด๊ธด ํ๋ฐ A-D ์ต๋จ๊ฑฐ๋ฆฌ ๊ฐ์ ์ถ๋ฐ์ง ๋ชฉ์ ์ง ์ ํด์ ธ ์๋ ์ต์ ๋น์ฉ? ์ต๋จ ๊ฑฐ๋ฆฌ? ๊ตฌํ๊ณ ์ถ์ผ๋ฉด A* ์๊ณ ๋ฆฌ์ฆ ์ฐ๋ฉด ๋จ. ํด๋ฆฌ์คํฑ ์จ์ ํ๋๊ฑฐ๋ผ ์๋๋ ๋น ๋ฆ
ํ์ง๋ง ๋นจ๋์ฃ ?