์ผ๋จ ๋ด๊ฐ 2๋จ๊ณ๊น์ง ํ์ด ๋ณธ ๊ฐ์์ผ๋ก๋ STL ์ฌ์ฉ๋ฒ ์ตํ๋ฉด์
ํด์ฌ๋ map ์จ๋ผ
์คํ ํ ์ฌ์ฉ๋ฒ์ด๋
Heap ์ด๋ฐ๊ฑฐ ๊ฒ์์์ ์ฌ์ฉํ๊ธด ํ๋๋ฐ, ์ด๊ฑธ ์ค์ ์์ ์ด๋ป๊ฒ ์จ์ผํ๋์ง๋ ๊ฐ์ด ์ ์์กํ.
๋ด๊ฐ ๋ฌธ์ ๋ฅผ ํ ์ ์๋๊ฑฐ๋, ์ค์ ๋ก ์ฌ์ฉํ๋ ๊ฑฐ๋์ ์ข ๋ค๋ฅธ๋ฏ?
C++ ์ธ๋ฆฌ์ผ๋ก ์กํฐ ๊ฐ์๊ฑฐ ์์ง์ด๋๊ฑฐ ํ ๋๋ STL์ ์์ผ๋๊ฑธ๋ก ๊ธฐ์ตํจ. ๊ตญ๋น ํ์์์ ์ด๋์ฐ์ ์ธ๋ฆฌ์ผ C++ RPG ์ ๋ถ ๋ง๋ค์ด๋ดค์๊ฑฐ๋ .
3๋จ๊ณ๋ ์ํด๋ด์ ๋ชจ๋ฅด๊ฒ ๋๋ฐ,
์ง๊ธ ํด๋ณด๋ฉด์ ๋๋ผ๋๊ฒ ์คํ๋ ค ์ ๋ํฐ๊ฐ ๊ฒฐ๊ตญ API ํด์ด์์?
API ์ฌ์ฉ๋ฒ์ ์ตํ๋๊ฒ ์ค์ํ ๊ฒ๊ฐ์๋ฐ ๋ญ๊ฐ ์ฝํ ๋ ๊ฒ์ ๋ง๋๋๊ฑฐ๋ ๋๋์ด ๋ค๋ฅธ ๊ฒ ๊ฐ์.
์คํ๋ ค ๊ฒ์ ๊ฐ๋ฐ์ API ํด ์ฌ์ฉ๋ฐฉ๋ฒ์ ์ตํ๋๊ฒ ๋ ์ค์ํ ๊ฒ ๊ฐ์ ๋๋์.
์ฝํ ๋ฅผ 3๋จ๊ณ๊น์ง ๋ฐฐ์์ผ ๊ฒ์ ๊ฐ๋ฐ์ ํ ์ ์๋ค๋ผ๋ ๋๊ธ ๋ฌ๋ ค์ ์ฝํ ๋ ๋ณ์ฉํด์ ์ผ๋จ ํด๋ณด๊ณ ์๋๋ฐ,
์ฝํ ๋ ๊ฒ์ ๊ฐ๋ฐ ๋ณด๋จ ๋ค๋ฅธ ์ชฝ ๋ฌธ์ ํ์ด ๊ฐ์ ๋๋?
๋ฌผ๋ฆฌํ์ผ๋ก ๋ฐ์ง์๋ฉด ์ฝํ ๋ ์ ๋ฐ์ ์ธ ๋ฌผ๋ฆฌ ๋ฌธ์ ๊ณ , ๊ฒ์ ๊ฐ๋ฐ์ ์ ๋ฐ์ ์ธ ๋ฌผ๋ฆฌ๋ฌธ์ ๋ณด๋ค๋ ๊ทธ ์ค์ ํ ํํธ๊ฐ์.
C#์ผ๋ก ์ฝํ ํ ๊นํ๋๋ฐ ๋๋ถ๋ถ ๋ฌธ์ ๊ฐ C# ์ง์ ์์ด์ C++๋ก ํ๋๋ฐ ์ด๊ฒ ์ ๋ํฐ ๊ฐ๋ฐ์ด๋์ ๋๋จ์ด์ง ๋๋์ด๋ค.
์ธ๋๊ฐค๋ฌ๋ค ์กฐ์ธ์ ๋ฐ๋ผ์ ์ฝํ ๋ถํฐ ํ๋ผ๊ณ ํ๋๋ฐ ๋ญ๊ฐ ๋ป๋บ ๋์๊ฐ๋ ๋๋์.
์คํ๋ ค ๊ทธ๊ฒ๋ณด๋จ UNITY ๋ฌธ์ ์ฝ๋๊ฒ ๋์๊ฑด์ง. ์ธ๋๊ฐค๋ฌ ๋ง๋๋ก ๊ฑ ์ฝํ ๋ฅผ ๋ค ํธ๋๊ฒ ๋ง๋๊ฑด์ง ํผ์ ์ด ์จ๋ค.
๋ด๊ฐ ๊ฒ์์ ๋ง๋ค๊ณ ์ถ๊ณ , ํฌํด์ ๋ง๋ค๊ณ ์ถ๊ณ , ํ์ฌ ์ผ์ ๋ถ๋ถ์์ ๋งํ๋๋ฐ ์ด๊ฑด ๋ถ๋ช ํ ๋ด ์ฝ๋ฉ ๊ธฐ์ ๋ ฅ ๋ถ์กฑ์ด๋ผ๋๊ฑธ ์ฒด๊ฐ์ ํ๋๋ฐ
์ด๊ฒ ์๊ณ ๋ฆฌ์ฆ์ ์ผ๋ก ์ดํด๊ฐ ์๋๊ฑด์ง ์๋๋ฉด ์ ๋ํฐ์์ ์ฐ์ด๋ ํจ์๋ช ์ด๋ ๋ณ์๋ฅผ ๋ชฐ๋ผ์ ์๋๋๊ฑด์ง ๋ชจ๋ฅด๊ฒ ๋๊ฒ๋ ์ด์ฒด์ ๋๊ตญ์ด๊ณ .
์๋ฃ๊ตฌ์กฐ์ ๋ชฉ์ ์ ๋๊ท๋ชจ ์๋ฃ๋ฅผ ๋น ๋ฅธ ์๊ฐ ๋ด์ ๊ด๋ฆฌํ๋๊ฑฐ๊ณ ๊ฒ์์ 7 ~16ms ๋ด์ ๋ชจ๋ ์์ ์ด ๋๋์ผ ํ ์ ๋๋ก ์๊ฐ์ด ์ค์ํ ๋ถ์ผ๋๊น
ํ ...
์ค๋ธ์ ํธ ๋ช๋ฐฑ๊ฐ์ฏค์ด๋ฉด ์ ๋ฐ์ดํธ ํ๋ฒ์ linq์์ญ๋ฒ์ฉ ๊ฐ๊ฒจ๋ ์๋ฌด ์๊ด ์์ง๋ง ๋ช์ฒ๊ฐ ๋ช๋ง๊ฐ์ฏค์ด๋ฉด ์ด์ผ๊ธฐ๊ฐ ๋ฌ๋ผ์ง
๊ทธ๋ฌ๋๊น ๋ ๋ ผ๋ฆฌ๋ ์ด๊ฑฐ์ง? ํฐ ๊ท๋ชจ์ ๊ฒ์์ ๋ง๋๋๋ฐ์ ํ์ํ ์๊ณ ๋ฆฌ์ฆ์ ์ฝํ ์ ๋์ค๋๊น ๋ฐฐ์๋ฌ๋ผ ์ด๊ฑฐ์ง? ์ผ๋จ ๊ณ์ ํด๋ด์ผ๊ฒ ๋ค. ๊ณ ๋ง๋ค.
๊ธ๊ณ ํ์ฌ์์ ์ฝํ ๋ณด๋ ์ด์ ๋ ํ๋ก๊ทธ๋๋ฐ์ ์ฌ๊ณ (์ด๋ฐ ํํ ์ฐ๊ธฐ์ซ์ง๋ง)๊ฐ ์ ํ๋ จ๋ ์ฌ๋์ด๋ฉด ์ ๋ํฐapi์ฏค์ด์ผ ์ฝ๊ฒ ๋ค๋ฃฐ ์ ์๋ค๊ณ ์๊ฐํ๊ธฐ ๋๋ฌธ
์ ๋ํฐ ํ๋๋ณธ๋ฐ ์์๋ก ํ๋ ๋ค์ด๋ด. ๋ณดํต ์ ๋ํฐ update๊ฐ ์๊ฐ๋ณด๋ค ๋น์ฉ์ด ํฌ๊ธฐ ๋๋ฌธ์ ์ ๋ฐ์ดํฐ๋งค๋์ ๊ฐ์๊ฑฐ ํ๋ ๋๊ณ ์ค๋ธ์ ํธ๋ค์ ๋ฆฌ์คํธ์ ๋ฑ๋กํด์ ์ ๋ฐ์ดํฐ๋งค๋์ ์ update์์ ๋ฆฌ์คํธ๋ฅผ ์ํํ๋ฉฐ ๊ฐ๋ณ ์ค๋ธ์ ํธ์ myupdate๊ฐ์๊ฑธ ๋๋ฆฌ๋ ๋ฐฉ๋ฒ์ด ์์
๊ทผ๋ฐ ๋ด๊ฐ ์ฌ๊ธฐ์ ๋คํธ์ํฌ๋ก ํ๋ ์ด์ด 17171๋ฒ์ด ํ์ด์ด๋ณผ์ ์๋๊ฑธ ๊ตฌํํ๋ค๊ณ ํด๋ณด์. 17171๋ฒ์ด ์ง๊ฐ ์ ๋ฐ์ดํธํ ๋๋ง๋ค ํจํท๊น๋ด์ ์๊ธฐ๊ฐ ํ์ด์ด๋ณผ์ ์๋์ง์๋์ง ํ์ธํด์ผ ํ ๊น? ๋น์ฐํ ์ด๋ฐ๊ฑด ์ ๋ฐ์ดํฐ๋งค๋์ ๊ฐ ํด๋นํ๋ 17171๋ฒ์ ์ฐพ์์ ๊ธฐ๋ฅ์ ์ํํด์ฃผ๋ ๋ฐฉ์์ด ์์ฐ์ค๋ฌ์ธ๊ฒ์
๊ทธ๋ผ ์ฌ๊ธฐ์ 17171๋ฒ์ ์ด๋ป๊ฒ ์ฐพ์์ผ ํ ๊น? foreach๋๋ฉด์ id 17171๋ฒ์ ์ฐพ์์ผ ํ๋? ๋ฑ๋ก๋ ์ค๋ธ์ ํธ๊ฐ ๋ช๋ง๊ฐ๋ผ๋ฉด? ๋ช์ฒ๋ง๊ฐ๋ผ๋ฉด? ์ด๋ด๋ ๋งค๋์ ์ ๋ฑ๋กํ ๋ id๋ฅผ ํค๋ก ์ฐ๋ map๋ ๋ง๋ค์ด ์ฃผ๋๊ฒ ์ข์ง ์์๊น? id๋ง ๋ฃ์ผ๋ฉด ๋ฐ๋ก ๋์ค๋๊น
๊ทธ๋ฌ๋ฉด ๋ ์ฌ๊ธฐ์ ์๊ฐํ ์ ์๋๊ฒ "์๋ ๊ทธ๋ผ ๋ฆฌ์คํธ ํ์์๋๊ฑฐ ์๋? map๋ง ์์ด๋ foreach ๋์์" ๊ฐ ์๋๋ฐ map์์ foreach๋๋ฆฌ๋๊ฒ ๋ฆฌ์คํธ๋ณด๋ค ๋๋ฆด ์ ์์. ๋ฐ๋ผ์ ์๋ฃ๊ตฌ์กฐ๋ฅผ 2๊ฐ ๋๋๊ฒ ํฉ๋ฆฌ์
๋จธ ์ด๋ฐ์์. ์ธ๋ฆฌ์ผ๊ฐ์๊ฒ๋ ๊น๋ณด๋ฉด stl์ ๋์ํ๋ ์ง๋ค ์ ์ฉ ์๋ฃ๊ตฌ์กฐ ๋ค ๋ง๋ค์ด๋์. ์์๋ ์ ์์ง๋ง ๊ด๋ฆฌํ ๊ฐ์ฒด ์๊ฐ ์์ผ๋ฉด ์๋ฌด ์๊ด ์์ ๋ง์ ๋๊ฐ ๋ฌธ์ ์
๊ทธ๋ฅ update๋งค๋์ ํํ ํ๋ง๋ค๊ตฌ ์ด์ฉ์๊ฐ ํ์ด์ด๋ณผ์์๋ update๋งค๋์ ํ์ ์ถ๊ฐํด์์ฒ๋ฆฌํ๋ฉด์๋๋?.. map์ ์ด์ฐจํผ redblacktree๋ผ์ logn์ ์ฐพ์์ง์๋ map์ฐ์
ํ ์ฌ๋ฌ๊ฐ์ง ๋ฐฉ๋ฒ์ด ๋ง๊ตฌ๋ ๊ณ ๋ง๋ค
์ก์ ํ๋ ์กด๋๋ง์ด ์ฐ๋ ๋ฐฉ์์ด์ง. ํ๋ก๊ทธ๋๋ฐ์ข ์น๊ณ ๊ฒํ๋ก๊ทธ๋๋ฐ์์์ ์๋ฃ๊ตฌ์กฐ ํ์ฉ ๋ฐฉ์์ด ๊ถ๊ธํ๋ฉด openrct2 ์ฝ๋๋ด๋ณด์ . ์ปค์คํ ๋ฉ๋ชจ๋ฆฌํ๋ถํฐ ๋คํธ์ํน๊น์ง ๊ฒ์์ ์๋ฃ๊ตฌ์กฐ๊ฐ ์ด์ผ ์ฐ์ด๋์ง ์ ๋ถ ๋ค ์์
๊ฐ์ฌํฉ๋๋ค. ๊ฐ์์์ผ์ค์ ์ ๊ฐ ๋๋ถ์ ๋ง์ด ์์๊ฐ๋๋ค.