๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ—ฃ๏ธ ์‹ ์ž… ์ธํ„ฐ๋ทฐ

(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์œผ๋กœ ๋ณ€ํ™˜์‹œ์ผœ์ค๋‹ˆ๋‹ค. ๋ฉด์ ‘๊ด€ : ๋ฆฌ์†Œ์Šค๋ฅผ ํฌ..