๊ฒ์ ๋ด ์บ๋ฆญํฐ๋ค์ ๋ฆฌ์คํธ์ธ๋ฐ
์บ๋ฆญํฐ๋ง๋ค ๊ณ ์ ID(int)๊ฐ ์์ด์, ์บ๋ฆญํฐ๋ค์ ๋ง๋ค ๋๋ง๋ค idCount๊ฐ ์ฌ๋ผ๊ฐ๋ฉด์ ID๋ฅผ ๋ถ์ฌ์ค
์ด์ ๋ฆฌ์คํธ์ ์นด์ดํธ๋ฅผ ๊ฐ์ด ๊ด๋ฆฌํ๊ณ ์ถ์ด์
public class CharacterListย
{
ย public int idCount;
private List<CharacterData> list; ~
์ด๋ ๊ฒ CharacterData์ ๋ฆฌ์คํธ๋ฅผ ์จ๊ฒผ๋๋ฐ,
์๋ํ๋ฉด ๋ฆฌ์คํธ๋ฅผ ์ ์จ๊ธฐ๋ฉด ๋ด๊ฐ ๋์ค์ idCount ๊ณ ์น๋๊ฑธ ๊น๋ฐํ๊ณ list์ ๋ด์ฉ๋ง ์์ ํ ๊น๋ด ์จ๊น
๊ทธ๋ฐ๋ฐ ์ด๋ฌ๊ณ Push, Remove, Get ์ผ์ผํ ๊ตฌํํ๋ ค๋ ๋ ๊ท์ฐฎ๊ณ
๊ธฐ์์ด๋ฉด ์ฐธ์กฐ๋ก ์๋ํ๋ฉด ํธํ ๊ฑฐ ๊ฐ์๋ฐ, ์ ์ง ์ผ์ผํ ๊ตฌํํ๊ณ ์๋ค๋ณด๋, ๋ฐ์ดํฐ๋ฅผ ๊ฐํ์ ์ผ๋ก ๊ด๋ฆฌํด์ผํ ๊ฒ ๊ฐ์ ๊ธฐ๋ถ์ด ์ค๋ฌผ์ค๋ฌผ ๋ค๊ธฐ ์์ํจ..
ํน์ ๋ด๊ฐ ํ๊ณ ์๋ ์ง์ ๋ํด์ ์กฐ์ธํด์ค ์ ์์๊น?
์ด๋ฏธ ๋ด๊ฐ ํ์ํ ๊ธฐ๋ฅ์ด ์๋์ง, ์๋๋ฉด ๋ป์งํ๊ณ ์๋๊ฑด์ง ๋ฑ๋ฑ...
list count, indexof
ใดใด ์บ๋ฆญํฐ ์์ด๋ ์ฃผ๋๊ฑฐ, ์ค๊ฐ์ ์ญ์ ๋๋ ์บ๋ฆญํฐ๊ฐ ์์ผ๋ฉด ๋ฆฌ์คํธ ์นด์ดํธ๋ idCount๋ ๋ค๋ฅด๊ฒ ๋๋
idCount๊ฐ ํ์์์. ์บ๋ฆญํฐ 30๊ฐ๋ฉด list countํด๋ 30๊ฐ๊ณ , ์ค๊ฐ์ 3๊ฐ๋นผ๋ฉด 27๊ฐ๊ทธ๋๋ก๋์ด. id๋ ํ์์์. ์ธ๋ฑ์ค๊ฐ ๊ณง id์ ์ค๊ฐ์ ๋น ์ ธ๋ ๋์ค์ ์ถ๊ฐ๋๋ ์์์ ์ธ๋ฑ์ค๊ฐ ๋ก๊ฒจ์ง๊ณ ์ถ๊ฐ๋
๊ทธ๋ฅ ๊ทผ๋ณธ์ ์ผ๋ก ์๋ฃ๊ตฌ์กฐ์๋ํ ์ดํด๋ ์ค๊ณ์๋ํ ๋ฏธ์์ด ํฐ ๋ฌธ์ ๋ก๋ณด์. ์บ๋ฆญํฐ๊ฐ id๋ฅผ ๊ฐ์ง๊ฒํ๊ณ ์ถ๋ค๋ฉด. id๋ ์บ๋ฆญํฐ๋ฆฌ์คํธ ํด๋์ค๊ฐ ์๋๋ผ ์บ๋ฆญํฐ ํด๋์ค ์ค์ค๋ก๊ฐ ๊ฐ์ง๊ณ ์์ด์ผํจ. id์ ํ ๋น์ ์บ๋ฆญํฐ์ ์์ฑ ์์ ์ ์ ์ฒด ์บ๋ฆญํฐ์ ๊ฐฏ์๋ฅผ๊ฐ์ ธ์์ ๊ฐฑ์ ํ๊ฑฐ๋, lastindex์ ์บ๋ฆญํฐ๋ฅผ๊ฐ์ ธ์์ id++์ ํ ๋นํด์ฃผ๋์์ด์ด์ผ ํ ๊ฒ์
์ฅ ์ค์ค๋ก ๊ฐ์ง๊ณ ์์ํ์ ์์ด ๋งค๋์ ์์ ๊ด๋ฆฌํ๊ณ ๊ทธ ๋งค๋์ ๋ก๋ถํฐ ์บ๋ฆญํฐ๊ฐ id๋ฅผ ํ ๋น๋ฐ๊ฒ ํ๊ณ ์ถ์ด์ ์ ๋ ๊ฒ ์ง๋๊ฑธํ ๋ฐ ์ ์ค์ค๋ก ๊ฐ์ง๊ณ ์์ด์ผํ๋ค๊ทธ๋ player๊ฐ ์ผ๋ง ์์ผ๋ฉด ๊ทธ๋๋ ๋์ง๋ง ๋ง์ผ๋ฉด ๋ง์์๋ก ๋งค๋์ ๋ถ์ฌ์ player๊ด๋ฆฌํ๋๊ฒ ๋ ์ข์๊ฑฐ๋ผ๊ณ ๋ณด๋๋ฐ
๋งค๋์ ํด๋์ค๋ก ๊ด๋ฆฌํ๋ ์๋ฏธ์์๋ ๋ง์ฐฌ๊ฐ์ง์. AddCharacter ํจ์๋ฅผ ๊ตฌํํ๊ณ , id๋ last item์ id์์ ++ํ๊ฑฐ๋, count๋ฅผ ๊ธฐ์ค์ผ๋ก์ฌ์ฉํ๋ฉด๋. idCount๋ฅผ ๋ณ๋๋ก ์ ์งํ ์ ๋ฌธ์ ๊ฐ ๋ง์์ง 1. ์ธ๋ฐ์๋ ๋ณ์ํ ๋น 2. add / remove / insert / ๋ฑ ๋ฆฌ์คํธ์ ๊ด๋ จ๋ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ๋๋ง๋ค count๋ณ์์๋ํ ๊ด๋ฆฌ๋ฅผ ๋ณ๋๋กํด์ค์ผํ๋ ๋ณต์ก์ฑ์ฆ๊ฐ 3. ์ฌ์ง์ด public์ด๋ผ์ ์ธ๋ถ์์ ์ด๋๊ฐ์์ ์์๋ก set ๋ ์์๋ ๋ฌธ์ ๊ฐ ์ด๋ฆผ idCount๋ผ๋ ๋ณ์์์ฒด๊ฐ ์ด์ํ๋ณ์์. id๋ ๋ง ๊ทธ๋๋ก ์ ๋ํฌ ๋ฒจ๋ฅ๋ฅผ ์๋ฏธํจ. id์ ์์ฑ๊ท์น์๋ฐ๋ผ ์ด๋ฏธ ๋ ผ๋ฆฌ์ ์ผ๋ก ๋์ถ๋๋ ๊ฐ์ id๊ฐ ๋์ ์ผ๊ฒฝ์ฐ. last index์ id++๊ฐ next id์ด๋ฉฐ,
๊ทธ์น ๊ทธ๋์ ์๋์์๋ ๋งํ์ง๋ง list๋ก ๊ด๋ฆฌํ๋๊ฒ๋ณด๋จ Dictionary๊ฐ ๋ ์ํฉ์ ๋ง์๊ฑฐ๊ณ idCount๋ private์ผ๋ก ์จ๊ฒจ์ผ๊ฒ ์ง ๋ด๊ฐ ์ ๊ณตํ๋ ํจ์์์๋ง set๋ ์ ์๊ฒ ๊ทธ๋ฆฌ๊ณ Dictionary๋ก ๊ด๋ฆฌํ๋ ์๊ฐ ์ธ๋ฑ์ค๋ ์์ด์ง๋๊น ํ์ฐ์ ์ผ๋ก idCount๋ ํ์ํด์ง๊ฑฐ๊ณ
์บ๋ฆญํฐ ๋ฆฌ์คํธ์ public idCount๋ฅผ ๋ณ๋๋ก ์ถ๊ฐํด์ ์ป์ด์ง๋ ์ฅ์ ์์๊ณ ๋จ์ ๋ง์ด ๋์ด๋จ. ๊ฑ ์ด๊ฑด ์ทจํฅ์ด๋ ์คํ์ผ์ ๋ฌธ์ ๊ฐ์๋. ๊ตฌ๊ตฌ์ ์ ์ฝํ์๋ ๋ถํฉํ๋ ์ค๊ณ์์น์ ๊ดํ ๋ ํผ๋ฐ์ค๋ฅผ ๊ฐ์ ธ๋ค๊ฐ ์ฃผ๋ ค๋ฉด ํ ์์์ง๋ง ์ฝ์ง์ขํด๋ณด๊ณ ์๊ธฐ๊ฐ ๋ชธ์ผ๋ก ์ตํ๋ณด๋ฉด ํผ์์๋ ๊นจ์ฐ์น ์์๋ 1ํ๋ ์์ค์ ๋ฒ์ฃผ์. ์บ๋ฆญํฐ ํ ์ด๋ธ์ ์๊ฐํด๋ณด์ . id ์ด๋ฆ ์ฑ๋ณ ์ง์ ๋ค ๊ฐ์ ๋ผ์ธ์ ๋ค์ด๊ฐ๋ ์บ๋ฆญํฐ์ ์์ฑ์. id์ ํ ๋น์ ์บ๋ฆญํฐ์ ์์ฑ์์ ์ ๊ฒฐ์ ๋๋ฉฐ id๋ ์ ๋ํฌํ๊ณ ์์ฑ ๊ท์น์ด ์ผ์ ํ๊ธฐ๋๋ฌธ์ ์ธ๋ถ๋ฆฌ์คํธ์์ ๋ณ๋์ idCount๊ฐ ์กด์ฌํด์ ์๋๋๊ฑฐ์
์ ์๊น๋ถํฐ ๋๋ ๋ค๋ฅธ์๋ฆฌ๋ฅผ ํ๋๊ฑฐ ๊ฐ์ง.. public idCount๋ ์ ๋์ค๋ฉฐ ์ธ๋ถ๋ฆฌ์คํธ์์ idCount๊ฐ ์กด์ฌํด์๋ ์๋๋ค๋ ์บ๋ฆญํฐ๋ค์ ๊ด๋ฆฌ๋ฅผ ๋งก์์ ํ ๋งค๋์ ๊ฐ ์ ์ธ๋ถ๋ฆฌ์คํธ๋ก ๋๋์ง ๋ชจ๋ฅด๊ฒ ์ ๋ ๋ถ๋ช idCount๋ ๋งค๋์ ๊ฐ ๊ด๋ฆฌํด์ผํ๊ณ ๋งค๋์ ๊ฐ ์ ๊ณตํ๋ ํจ์์์๋ง setํด์ผํ๊ธฐ๋๋ฌธ์ private์ผ๋ก ํด์ผํ๋ค๊ณ ๋งํ๊ณ ๊ทธ๋ฆฌ๊ณ ๋ญ ์ค๋ง ํ๋ ์ด์ด์ id๋ฅผ ๋์ ์ผ๋ก ํ ๋นํ๋๊ฒ๋ง๊ณ ์์ ๋ฐ์ดํฐํ์ผ์์ ํ๋ ์ด์ด์ id๋ฅผ ๋ฐ์๋ ผ๋ค๋๊ฑด ์๋ํ ๊ณ ๋งค๋์ ๋ฅผ ์ธ๋ถ๋ก ์ทจ๊ธํ๋ฉด ๋๋์ฒด Object๋ค์ id๊ด๋ฆฌ๋ ๋๊ฐํจ?...
์ฌ์ง์ด ์ด๊ฑด ๋๊ฐ๋งํ ๋์ ๋๋ฆฌ๋ฅผ ์ด์ฉํ ๋ฐฉ์์์๋ ๋์ผํจ. count๋ฅผ๋ณ๋๋ณ์์์ ์นด์ดํ ํด์ ๊ธฐ๋กํด๋๋๊ฒ์๋๋ผ, ์บ๋ฆญํฐ ์์ฑ ํจ์์์ idํ ๋น์ ๋์ ๋๋ฆฌ์์ ๊ฐ์ฅ ํฐ id๊ฐ์ ๊ตฌํด์จ ํ ++ํด์ ํ ๋นํ๋์์ด ๋์ด์ผํจ. ์ ์ด์ ๋ณดํต์ ํ ์ด๋ธ์ ๋ฐ๋ก ๋ง๋ค๊ฒ ์ง๋ง. ์ด๋๋๋๋๋ฐ? ์ ๋๋๋๋๋ฐ? ํ์ง๋ง ์ข์ ์ฝ๋ ์ข์ ์ค๊ณ์ธ๊ฐ๋ ๋ค๋ฅธ๋ฌธ์ ์. ๋ ์ด๋ฐ๊ฒฝ์ฐ๋ ๋ค๋ฅด๋ค๊ฐ์๋๋ผ ํ๋ฆฌ๋ค๊ณ ์๊ฐํ๊ณ ๋ด๊ฐ ์๋์๊ฐ ์๋๋ผ๋ ์ด๋ฏธ ์๋ง์ ๋๋ณด๋ค ์๋์ฌ๋๋ค์ด ์ ์ํ ๊ฐ์ด๋๋ค์ ๊ธฐ์ค์ ํ ๋๋ก ์๊ธฐํด๋ ๊ฐ์๊ฒ์. ์ด๋ค๊ฒ ๋ ๋ง๋๋ฐฉ๋ฒ์ธ์ง ๋ณธ์ธ์ด ์๊ฐํด์ ํ๋จํ๊ณ ๊ฒฐ์ ํ ๋ฌธ์ ์. ๋ด๊ฐ ํ๋ฆด์๋์๋๊ฑฐ์ง.
๊ทธ Count๋ ๋งค๋์ ๊ฐ ์๋ฒ์ฝ๋๋ผ๊ณ ๋ณธ๋ค๋ฉด ๊ฐ์ฅ ํฐ id๊ฐ์์ ++ํ๋ ๋ฐฉ์์ ์ข์ง ์์๊ฒ ๊ทธ๋ฌ๋ฉด ์ธ์ ๊ฐ Unsigned int overflow๊ฐ ์ผ์ด๋ ๊ฑฐ๊ณ ๊ทธ๊ฑธ ์๋ฐฉํ๊ธฐ ์ํด์๋ผ๋ ๋ญ ๋น์ฅ ์๊ฐ๋๋ ๋ฐฉ๋ฒ์ผ๋ก๋ ๋ด๋ถ์ ์ผ๋ก ์ง์์ง id๋ฅผ ๋ด๊ณ ์๋ ํ๋ฅผ ๋ค๊ณ ์๋ค๊ฐ ํ๋ ์ด์ด๋ฅผ ์ง์ฐ๋ ํจ์์์ id๊ฐ์ ํ์ ๋ฃ์๋ค์ ์ถ๊ฐํ ๋ ํ๊ฐ ๋น์ด์์ง ์๋ค๋ฉด ๊ทธ id๋ฅผ ํ ๋นํ๋๋ก ํ๋๊ฒ ๋ง๋ ๋ฐฉ๋ฒ์๋?
idํ ์ด๋ธ์ ๋ง๋ ๋ค๋๊ฑด ๋์ ์ผ๋ก ์บ๋ฆญํฐ๊ฐ ์์ฑ๋์ง ์์๊ฒ์ ๊ธฐ์ค์ผ๋ก ํ์๋๋ง ์ ํจํ ๋ฐฉ์ ์๋์ผ? ๋์ ์ผ๋ก ์ด๋ ํ Object๊ฐ ์์ฑ๋๋ฉด ๊ทธ Object์ id๋ฅผ ๋ถ์ฌํด์ค์ผํ๋๋ฐ
๋ญ๊ฐ ์ง๊ธ ๋๊ธ์ ๋ณด๋๊น ๋๊ฐ ๋งํ๊ฒ๋ค์ด ๊ฒ์์์๊ฐ ๋ณดํธ์ ์ด๋ผ๊ธฐ๋ณด๋จ ์ฑ๊ธ๊ฒ์์๋ค๊ฐ Object๋ค์ด ์ฒ์ Init๋๊ณ ๋์ ๋ ์ด์ ์์ฑ๋์ง ์์๋๋ฅผ ๊ธฐ์ค์ผ๋ก ๋งํ๊ฑฐ ๊ฐ๋ค
์ค๋ฒํ๋ก์ฐ ์๊ธฐํ๋๊ฒ๋ ๋ณ์๊ด๋์๋ ์๊ธฐ์. 1์ฉ์ฆ๊ฐํ๋ id๋ง๋ค์ด์ฐ๋๋ฐ 1. ๋ณ๋ count๋ฅผ ๋ง๋ค์ด์ด๋ค๊ณ ์ค๋ฒํ๋ก์ฐ๊ฐ ์์ผ์ด๋จ? 2. ์ง์ฌ์ผ๋ก ์ ๊ฒ๋ง์ด๋๋ค๊ณ ์๊ฐํจ? ๋งค์ฐ ๊ทน๋จ์ ์ธ ์์๋ฅผ ๊ฐ์ ธ๊ฐ๋ ๋์ผ์ด์ค๋ ๋์ผํจ. ์์ฑ์์ , ์ญ์ ์์ ์์ id ์ฐพ์์ ๋ก๊ฒจ์ฃผ๊ณ ์ฆ๊ฐ์์ผ์ฃผ๋๊ฒ ๋์ผํ ๋ ผ๋ฆฌ๋ผ๋ฉด ๊ฒฐ๊ณผ๊ฐ ๋๊ฐ์. idCount๊ฐ ์์ด์ ์๊ธฐ๋๋ฌธ์ ๊ฐ๋ญ์?
์ ์ผ์ด๋์ง ์ ์ด์ Dictionary๋ฅผ ์ด์ฉํ๋ฉด Dictionary์์ฒด๋ก๋ ์ธ๋ฑ์ค ์ ๊ทผ๋ ๋ถ๊ฐ๋ฅํ๊ณ ์ธ๋ฑ์ค ๊ฐ๋ ๋ ์๊ธฐ๋๋ฌธ์ ๋ฐ๋ก count๋ณ์๋ฅผ ๋ง๋ค์ด์ id๋ฅผ ํ ๋นํด์ผํ๊ณ ์ด๋ ๋น์ฐํ๊ฒ๋ ๊ณ์ํด์ Object๋ค์ด ์์ฑ๋๋ฉด ๋ ์๋ก count๊ฐ์ด ๋์ด๋๋ ๊ตฌ์กฐ์ผ์ ๋ฐ์ ์์ ์) 200๋ฒ Object ์์ฑ -> 201๋ฒ Object ์์ฑ -> 200๋ฒ Object ์ญ์ ์ด๋ฌ๋ฉด 200๋ฒ์ด ์ญ์ ๋์๋ค๋๊ฒ์ Dictionary์์ ๋ชจ๋ฆ ๊ทธ๋ ๋ค๊ณ 200๋ฒ ๋ค์์ ์ซ์๋ฅผ ํ ๋นํ๋ ค๊ณ ํ๋ฉด ์ด๋ฏธ 201๋ฒ Object๊ฐ ์์ ์ด๋์ ์๊น ๋งํ Queue๋ฅผ ์จ์ ์ด 200๋ฒ์ ๋ค๊ณ ์๊ฒ ํ๊ณ ๋ค์ ์์ฑ๋ ๋๋ ์ด 200๋ฒ์ ์ฐ์ ์ผ๋ก ํ ๋นํ๊ฒ ํด์ฃผ์ ์ด๊ฑฐ์ง ์ด๋ฌ๋ฉด Unsigned int์ ์ต๋๊ฐฏ์์ธ 2^32 - 1๊ฐ์
Object๊ฐ ๋์์ ์์ฑ๋์์ง ์๋ํ Overflow๋ฌธ์ ๋ฅผ ํผํ ์ ์์ง
์บ๋ฆญํฐ id ๋ฅผ ์ ์ํด๋ณด์ . ์บ๋ฆญํฐ๊ฐ ๊ฐ์ง๋ ๊ณ ์ ํ ์ ๋ํฌ ํค ์ด๋ฉฐ, ์์ฑ์์ ์ ์์ฑ๊ท์น์ ๋ฐ๋ผ ๊ฒฐ์ ๋๋ค. ์์ฑ๊ท์น์ด ๋์ ๋๋๋ฐฉ์์ด๋ฉด last id++ ์ด๊ณ , ์ค๊ฐ ์ฝ์ ์ญ์ ์ ๋ฐ๋ผ ์ ๋์ ์ผ๋ก๋ณํด์ผํ๋ค๋ฉด ๋ณํด์ผํ๋ ์์ ์์ ๊ฐฑ์ ํด์ฃผ๋ฉด ์๊ธฐ ์ฑ ์์ ๋ฒ์ด๋์ง์์.
id๊ฐ ์ ๋ณํด id๋ ํ ๋นํ ์๊ฐ๋ถํฐ ์๋ฉธ๋๊ธฐ ์ ๊น์ง ๊ทธ id๊ฐ Player๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํค๊ณ ์์์ด ๋ณด์ฅ๋์ด์ผ ํ๋๋ฐ ์ค๊ฐ ์ฝ์ ์ญ์ ๊ฐ ํน์ List์๊ธฐ๋ผ๋ฉด List๋ Find, Remove๊ฐ O(n)์ ์์ ์ด์ฌ์ ํจ์จ์ฑ์ด ๋ถ์กฑํจ ๊ทธ๋์ Dictionary ์จ์ผํ๋ค๊ณ ๊ณ์ ๋งํ๋๊ฑฐ๊ณ ๋ ์์ ๋งํ๋ฏ ๋ง์ง๋ง id์ ++์ ํด์ ์ฃผ๋๊ฑด ๊ฒ์ ๊ท๋ชจ๊ฐ ํฌ์ง ์๊ณ ์ฑ๊ธ๊ฒ์์ ํํด์ '๊ฑฐ์' ์์ผ์ด๋ ์ ์๋ ์ผ์ ๋ง์ ๊ทผ๋ฐ ๊ทธ๊ฒ ๋ฉํฐ๊ฒ์์ด๋ ๊ฒ์์ ๊ทน๋จ์ ์ผ๋ก ์ค๋ ์ผ๋๋ฉด ๊ฐ๋ฅํ ์ผ์ด์ง
์ ์ง๊ธ๋ณด๋๊น List์์ Find๋ ์ธ๋ฑ์ค ์ ๊ทผ์ด๋๊น O(1)์ด๋ค ใ ใ ใ ใ Remove๋ Insert์ ๊ฒฝ์ฐ O(n)
๊ฑ ๋๊ฐ ๊ทธ๊ฒ ์ข๋ค์ถ์ผ๋ฉด ๊ทธ๋ ๊ฒํ์ . ๋๊ฐ ๋ด๋ง ๋ฉ๋์๊ฐ๋๊ฑฐ์ฒ๋ผ ๋๋ ๋๊ฐ๋งํ๋๊ฑฐ ์ดํด์๋. ์ค๋ฒํ๋ก์ฐ์๊ธฐ๋ ๋ฆฌ์คํธ ์ฑ๋ฅ์๊ธฐ๋ ๊ทธ๋ฅ ๋ฐ๋๋ฅผ์ํ ์ต์ง๋ถ๋ฆฌ๋๊ฑธ๋ก๋ง ๋๊ปด์ง. idCount๊ฐ ์๊ณ ์๊ณ ๋ ๋ฌธ์ ๊ฐ ์๊ธฐ๊ณ ์์๊ธฐ๊ณ ๋ ์๊ด์ด์์๋ฟ๋๋ฌ ์๊ทธ๋ฅ ์์ฉ๊ฒ์๋ค ํ๋ก๊ทธ๋จ๋ค ๋ฏ์ด๋ด๋ ๊ทธ๋ฐ์์ผ๋ก ์ํ๊ณ , ์๋ก ์ ์ธ ์๊ธฐํ๋ ๊ธฐ๋ณธ์๋ค์์๋ ํ์ง๋ง๋ผ๋ ํ๋์. ๋๋ ๋ด๊ฒฝํ์ ๋ฏฟ์ผ๋๊น ๋๋ ๋ ๊ฒฝํ์ ๋ฏฟ์ผ์ . ๋ฉ๋์๊ฐ ์ถ์์ ์ธ ์๊ธฐ ๊ธธ๊ฒํด๋ด์ผ ๋ฌด์๋ฏธํ ํค๋ฐฐ๋ง ๊ธธ์ด์ง๊ฑฐ์ ๋ณ๋ก์ ์๋ฏธํ ์๊ฐ์ด ์๋ก์๊ฒ์๋๋ฏ
idCount๋ฅผ 'lastID'๋ก ์ด๋ฆ์ ๋ฐ๊พธ๊ณ (์ด๋ฆ ์ด์ํ๋ ๋ฏ?), ScriptableObject์ uint ๋ณ์๋ก ๋ง๋ค์ด์ ๋ฐ๋ก ๋ถ๋ฆฌ์์ผฐ์(๋ก์ปฌ ์ ์ฅ ๋๊ฒ), ์ ์ฒด์ ์ธ ๊ธฐ๋ฅ์ private Dictionary ๋ฅผ ๋ค๊ณ ์๋ DataManager(singleton)์ ๊ธฐ๋ฅ์ ๋์๊ณ , ์ธ๋ถ์์ ๋ฐ์ดํฐ๊ฐ ํ์ํ ๋๋ dictionary ์์ FindAll ํด์ ๋ฆฌ์คํธ๋ก ์ถ๋ ค์ ๋ฆฌํดํ๋ public ๋ฉ์๋๋ฅผ ๋ง๋ค์ด ๋ . ์ด์ 2ํ๋ ํด๋ ๋จ? ใ ใ ๋ง์ด ๋ฐฐ์ ์ด ๊ณ ๋ง์
๋ง์ฝ List๋ฅผ ๊ด๋ฆฌํ๊ณ ์ถ์๊ฒ ๋ชฉ์ ์ด๋ผ๋ฉด ๋น์ฐํ idCount๋ ์จ๊ธฐ๊ณ ๋๋จธ์ง ํด๋์ค๋ค์ด ์ ๊ทผํ ๋๋ Get, Push, Removeํจ์๋ฅผ ๊ตฌํํด์ ์ ๊ณตํด์ฃผ๋๊ฒ ์ ์์ด๋ผ๊ณ ์๊ฐํ๋๋ฐ ๊ทธ๋์ผ ๋์ค์ ์ ์ง๋ณด์๋ ํธํ๊ณ ํ๋์ ๋ณด๊ธฐ์๋ ์ข์๊ฑฐ ๊ฐ์
๋ง์ด ์ฐ๋ ๊ธฐ๋ฅ์ผ ๊ฒ ๊ฐ์๋ฐ, Unity์ ์ด๋ฏธ ๋ง๋ค์ด์ง ์๋ฃ๊ตฌ์กฐ๋ ์๋๊ฑฐ์ผ? ๋งจ๋ ๋ฐํด ๋ ๋ง๋ค๊ณ ๋ ๋ง๋ค๊ณ ํด์ ใ ใ
๊ทผ๋ฐ idCount๊น์ง ๋ถ์ฌ๊ฐ๋ฉด์ ํ๋ ์ด์ด๋ฆฌ์คํธ๋ฅผ ๊ด๋ฆฌํ ๊บผ๋ผ๋ฉด ๋ง์ด ์์ฑ๋ ๊ฑฐ๋๊น ๋ง๋๋๊ฑธํ ๊ณ ๊ทธ๋ฌ๋ฉด List๋ณด๋จ Dictionary๊ฐ ๋ซ์ง ์์?
์ด ๊ทธ๋ ๋ค.. ๊ณ ๋ง์! ๊ทผ๋ฐ ์ด์จ๊ฑฐ๋ idCount๋ dictionary ๋ฐ์์ ๊ด๋ฆฌํด์ผ ๋๋๊ฑฐ๋๊น ๋ํํด์ผ ๋๋๊ฑด ๋ณํจ ์๋๊ฑฐ์ง?
๋ง์ด ์ฐ์ธ๋ค๊ณ ํด๋ ์ ๋ ๊ฒ ๋ง๋๋๊ฑด ์ข ๋ณดํธ์ ์ด๋ผ๊ธฐ๋ณด๋จ ์ปจํ ์ธ ๋จ ์ฝ๋ ๋๋์ด ๊ฐํด์ ์์ง ์์๊น? ๋๊ฐ ๊ฒ์์ ๋ง์ถฐ์ ์ํ๋ ๋์๋ค์ ์ ๊ณตํ๋ ํจ์์์ ๋ง๋ค์ด์ผํ์์
๊ทธ์น ๋งค๋์ ๊ฐ private์ผ๋ก ๋ค๊ณ ์๊ณ ํจ์์์ ์กฐ์ํ๋๋ก ํด์ผ๊ฒ ์ง
id๋ฅผ uuid๋ก ์์ฑํ๋ ๋ฐฉ๋ฒ๋ ์์. ์ฒซ๋๊ธ ๋จ์ฌ๋ ์ด์ํ๋ค id๋ index๊ตฌ๋ถ์ ๋ชปํ๋๊ฑฐ ๊ฐ์ id๋ฅผ ์ซ์๋ฅผ ์ฆ๊ฐํ๋ ๋ฐฉ์์ผ๋ก ์ฌ์ฉํ ๊ฒฝ์ฐ ๋งค๋์ ๊ฐ ์๋ค๊ณ ์์ ๊ฐ์ id๊ฐ์ง ๊ฐ์ฒด๊ฐ ์์ฑ๋ ์๋ฐ์ ์๋๋ฐ..