๐ฃ๏ธ ์ ์ ์ธํฐ๋ทฐ (23) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ ์ ์ ๊ฐ๋ฐ์ ๊ธฐ์ ๋ฉด์ : ๊ทธ๋ํ ์๊ณ ๋ฆฌ์ฆ A* (A-Star) ์๊ณ ๋ฆฌ์ฆ ํด๋ฆฌ์คํฑ ๊ธฐ๋ฐ ํ์: A* ์๊ณ ๋ฆฌ์ฆ์ ํต์ฌ์ ํด๋ฆฌ์คํฑ ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ ๋ ธ๋์์ ๋ชฉํ๊น์ง์ ์์ ๋น์ฉ์ ์ถ์ ํ๋ ๊ฒ์ ๋๋ค. ์ด ํด๋ฆฌ์คํฑ์ ํ์ฌ ๋ ธ๋์์ ๋ชฉํ ๋ ธ๋๊น์ง์ ์ต์ ์์ ๋น์ฉ์ ์ ๊ณตํฉ๋๋ค. ์ต์ ๊ฒฝ๋ก ํ์: A* ์๊ณ ๋ฆฌ์ฆ์ ์์ ๋ ธ๋๋ก๋ถํฐ ๋ชฉํ ๋ ธ๋๊น์ง์ ์ต์ ๊ฒฝ๋ก๋ฅผ ์ฐพ์ต๋๋ค. ์ด ์๊ณ ๋ฆฌ์ฆ์ ํด๋ฆฌ์คํฑ์ ์ฌ์ฉํ์ฌ ํ์ ๊ณผ์ ์์ ๋นํจ์จ์ ์ธ ๊ฒฝ๋ก๋ฅผ ์ ๊ฑฐํจ์ผ๋ก์จ, ๋ณด๋ค ํจ์จ์ ์ผ๋ก ๋ชฉํ์ ๋๋ฌํ ์ ์๋ ๊ฒฝ๋ก๋ฅผ ์ฐพ์๋ ๋๋ค. ๋์ ์ธ ๋น์ฉ ํ๊ฐ: A*๋ ๊ฐ ๋ ธ๋์ ๋ํด ๋ ๊ฐ์ง ๋น์ฉ์ ๊ณ์ฐํฉ๋๋ค: ํ๋๋ ์์ ๋ ธ๋๋ก๋ถํฐ ํด๋น ๋ ธ๋๊น์ง์ ์ค์ ๋น์ฉ(G-Cost), ๋ค๋ฅธ ํ๋๋ ํด๋ฆฌ์คํฑ์ ํตํด ์ถ์ ๋ ํด๋น ๋ ธ๋๋ก๋ถํฐ ๋ชฉํ ๋ ธ๋๊น์ง์ ๋น์ฉ(H-Cost). ์ด ๋ ๋น์ฉ์ ํฉ(F-Co.. ์ ์ ๊ฐ๋ฐ์ ๊ธฐ์ ๋ฉด์ C++ : strcpy, strcat, strlen, atoI strcpy ํจ์๋ ํ ๋ฌธ์์ด์ ๋ค๋ฅธ ๋ฌธ์์ด๋ก ๋ณต์ฌํฉ๋๋ค. ์ฃผ์ํด์ผ ํ ์ ์ ๋์ ๋ฌธ์์ด์ด ์ถฉ๋ถํ ํฌ๊ธฐ๋ฅผ ๊ฐ์ ธ์ผ ํ๋ฉฐ, ๋์ NULL ๋ฌธ์ (\0) ๋ฅผ ํฌํจํด์ผ ํ๋ค๋ ๊ฒ์ ๋๋ค. char* StrCpy(char* dest, const char* src){ char* ret = dest; while(*src){ *dest = *src; dest++; src++; } *dest = '\0'; return ret; } strcat ํจ์๋ ํ ๋ฌธ์์ด์ ๋์ ๋ค๋ฅธ ๋ฌธ์์ด์ ๋ถ์ ๋๋ค. ์ด ํจ์๋ฅผ ๊ตฌํํ ๋์๋ ๋์ ๋ฌธ์์ด์ ์ถฉ๋ถํ ๊ณต๊ฐ์ด ์์ด์ผ ํ๋ฉฐ, ์ฒซ ๋ฒ์งธ ๋ฌธ์์ด์ ๋์์ ์์ํด์ผ ํฉ๋๋ค. char* StrCat(char* dest, const char* src){ chart* ret = dest; while(.. ์ ์ ๊ฐ๋ฐ์ ๊ธฐ์ ๋ฉด์ ์ค์ ๊ธฐ์ถ : ํต ์ ๋ ฌ ๋ฉด์ ๊ด : ์๊ณ ์๋ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ํ๋ ์ค๋ช ํด ์ฃผ์ธ์. ๋ : ํต์ ๋ ฌ์ ๋ํด์ ์ค๋ช ํ๊ฒ ์ต๋๋ค. ๋ : ์ฐ์ ํต์ ๋ ฌ์ ๋ถํ ์ ๋ณต ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ๋ฌธ์ ๋ฅผ ์์ 2๊ฐ์ ๋ฌธ์ ๋ก ๋ถ๋ฆฌํ๊ณ ๊ฐ๊ฐ์ ํด๊ฒฐํ ๋ค์, ๊ฒฐ๊ณผ๋ฅผ ๋ชจ์์ ์๋์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ์ ๋ต์ ๋๋ค. ํต์ ๋ ฌ์ ๋ถํ , ์ ๋ณต, ๊ฒฐํฉ์ ๋จ๊ณ๋ค๋ก ์ด๋ฃจ์ด์ง๋๋ค. ๋ : ๊ณผ์ ์ ์ค๋ช ํ๊ฒ ์ต๋๋ค. ๋จผ์ ๋ฐฐ์ด์์ ํ ์์๋ฅผ ํผ๋ฒ์ผ๋ก ์ค์ ํฉ๋๋ค. ํผ๋ฒ์ ๊ธฐ์ค์ผ๋ก ํผ๋ฒ๋ณด๋ค ์์์์๋ ํผ๋ฒ์ ์ผ์ชฝ์ผ๋ก ํผ๋ฒ๋ณด๋ค ํฐ ์์๋ ํผ๋ฒ์ ์ค๋ฅธ์ชฝ์ผ๋ก ์ฎ๊น๋๋ค. ํผ๋ฒ์ ์ ์ธํ ์ผ์ชฝ ๋ฐฐ์ด๊ณผ ์ค๋ฅธ์ชฝ ๋ฐฐ์ด์ ๋ค์ ์ ๋ ฌ ํฉ๋๋ค. ๋ถํ ๋ ๋ถ๋ถ ๋ฐฐ์ด์์ ๋ค์ ํผ๋ฒ์ ์ ํ ํ ํผ๋ฒ์ ๊ธฐ์ค์ผ๋ก 2๊ฐ์ ๋ถ๋ถ๋ฐฐ์ด๋ก ๋๋๋ ๊ณผ์ ์ ๋ฐ๋ณตํฉ๋๋ค. ์ด๋ฐ ๊ณผ์ ์ ๋ถ๋ถ ๋ฐฐ์ด๋ค์ด ๋ ์ด์ ๋ถํ ํ ์ ์์ ๋ ๊น์ง ๋ฐ๋ณตํ.. ์ ์ ๊ฐ๋ฐ์ ๊ธฐ์ ๋ฉด์ ์ค์ ๊ธฐ์ถ : ํด์ ๋ฉด์ ๊ด : ํด์ ํ ์ด๋ธ์ ๋ํด์ ์ค๋ช ํด์ฃผ์๊ฒ ์ต๋๊น? ๋ : ํด์ ํ ์ด๋ธ์ ์ฐ๊ด๋ฐฐ์ด ๊ตฌ์กฐ๋ฅผ ์ด์ฉํ์ฌ Key์ Value๋ฅผ ์ ์ฅํ๋ ์๋ฃ๊ตฌ์กฐ์ ๋๋ค. ๋ฉด์ ๊ด : ์ฐ๊ด๋ฐฐ์ด์ด ๋ญ๊ฐ์? ๋ : ์ฐ๊ด๋ฐฐ์ด์ ํค ํ๋์ ๊ฐ ํ๋๊ฐ ์ฐ๊ด๋์ด ์์ผ๋ฉฐ ํค๋ฅผ ํตํด ์ฐ๊ด๋๋ ๊ฐ์ ์์๋ผ ์ ์๋ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์๋ฏธํฉ๋๋ค. ๋ฉด์ ๊ด : ๊ณ์ ์ค๋ช ํด ๋ณด์ธ์. ๋ : ํด์๋ ๋ฆฌ์์ค๋ฅผ ํฌ๊ธฐํ๊ณ ์๋์ ์น์คํ ์๋ฃ๊ตฌ์กฐ์ ๋๋ค. ํน์ ํค ์ ๋ ฅ์ ๋ฃ์ผ๋ฉด ํด์ ํจ์๋ฅผ ํตํด์ ํน์ ์ฐ์ฐ์ ํตํด ํน์ ๊ฐ์ผ๋ก ๋ณํ์์ผ ์ค๋๋ค. ๋ฉด์ ๊ด : ํน์ ์ฐ์ฐ์ ์๋ฅผ ๊ฐ๋จํ ๋ค์ด์ฃผ์ค๋์? ๋ : ์๋ฅผ ๋ค์ด์ ๋ค์ด์ค๋ Key๊ฐ์ ๋ชจ๋ 100์ผ๋ก ๋๋๋ ์ฐ์ฐ์ ํ๋ค๋ฉด 110, 120, 130 ์ด๋ ๊ฐ์ด ๋ค์ด์ฌ ๋ 10,20,30์ผ๋ก ๋ณํ์์ผ์ค๋๋ค. ๋ฉด์ ๊ด : ๋ฆฌ์์ค๋ฅผ ํฌ.. ์ด์ 1 2 3 4 ยทยทยท 6 ๋ค์