์ ๋ํฐ๋ก ํ๋ก์ ํธ ์ค์ธ๋ฐ ๊ตฌํํ๊ณ ์ถ์ ๊ธฐ๋ฅ์ด ์๋๋ฐ ๊ฐ์ด ์์กํ์ ์ง๋ฌธํจ
A๋ผ๋ Queue์ ์ ์ฅ ๋ ๊ฐ์ฒด์ number๋ผ๋ ๋ณ์๊ฐ ์๋ค๊ณ ๋ด ์๋ค
๊ฐ ๊ฐ์ฒด์ number๋ ์ค๋ณต๋์ง ์์์ผ ํจ
์๋ก Queue์ ์ถ๊ฐ ๋ ๊ฐ์ฒด๋ฅผ ์ด๊ธฐํ ํ ๋ ์ด ์ค๋ณต๋์ง ์๋ ์ซ์๋ฅผ ๋ฃ์ด์ฃผ๋ ค๊ณ ํ๋๋ฐ
๊ทธ๋ฅ for๋ฌธ ์์ while๋ฌธ ๋๋ ค์ ์ค๋ณต๋์ง ์๋ ์ซ์ ๋์ฌ ๋ ๊น์ง ๋๋ฆฌ๋๊ฑฐ ๋ง๊ณ ๊ตฌํํด๋ณด๋ ค๊ณ ํ๋๋ฐ
์ผ๋จ ์๊ฐํ๋๊ฑด ์ซ์์ ๋ฒ์๋ ์ ํด์ ธ ์์ ์๋ฅผ ๋ค์ด 0~10์ด๋ผ ์น๋ฉด
Aํ number๋ฅผย ์ํํด์ 0~10 ์ค์ ์๋ ๊ฐ๋ค์ ๋ฆฌ์คํธ๋ก ๋ฐ์์
Random.Range(0, List.Count)๋ก ๋ฐ์ผ๋ฉด ๋ ๊ฑฐ ๊ฐ๋จ ๋ง์ด์ผ?
์ผ๋จ ๋ด๊ฐ ์๊ฐํ๋ ๋ฐฉ์์ด ์ข ์ด์ํ๊ฐ?
๊ทธ๋ฅ ์์ ์ ์ for+while๋ก ํ๋๊ฒ ๋์?
๋ง์ฝ ์ด์ํ์ง ์๋๋ค๋ฉด ๋ฐฉํฅ ์ข ์๋ ค์ฃผ์
๋๋ค๋ linq์ฐ๋ฉด ๋ ๊ฑฐ ๊ฐ์๋ฐ ์ธ ์ค ๋ชฐ๋ผ์ ์์ ์ข ์ ์ด์ฃผ๋ฉด ๊ฐ์ฌ
ํด๋น ๋๊ธ์ ์ญ์ ๋์์ต๋๋ค.
์ซ์ ์กด์ฌ ์ฌ๋ถ๋ณด๋ค ๋๋ค ๊ฐ์ ๊ธฐ์กด์ ์ ์ฅ๋ ๊ฐ๋ค๊ณผ ์ค๋ณต์์ด enqueueํด์ฃผ๋๊ฒ ๋ชฉ์ ์ด์ผ
ํ๋ก ๋๋ฆฐ๋ค๋๊น ๊ฑ ์ค๋ธ์ ํธ ํ์ ์ง์ด๋ฃ์ ๋๋ง๋ค number + 1 ํ๋ฉด ๋๋๊ฑฐ ์๋๋? ์๋ฅผ ๋ค์ด์ ์ฒซ๋ฒ์งธ ๋ค์ด๊ฐ๋ ์ค๋ธ์ ํธ๋ 0, ๋๋ฒ์งธ 1, ์ธ๋ฒ์งธ 2, ... ๊ตณ์ด ๋๋ค์ฑ์ ๋ฃ์ผ๋ ค๋ ์ด์ ๊ฐ ๋ญ์
๋๋ค์ผ๋ก ๋ฒ์ ์ธ๋ฑ์ค๋ฅผ ๊ฐ์ง๋ ๊ฐ์ฒด ์ฌ์ด ์ฌ์ด์ ๋๋ค์ผ๋ก ์ค๋ธ์ ํธ๋ฅผ ์ถ๊ฐํ๋ ค๊ณ ํ๋๊ฑฐ๊ฑฐ๋
๊ทธ๋ผ ํ๋ฅผ ์ฐ๋ ์ด์ ๊ฐ ๋ญ์
ํ๋ฅผ ์ฐ๋ ์ด์ ๋ ๋ด๊ฐ ๋ง๋ ์ค๋ธ์ ํธ ํ๋ง์ด ํ๋ฅผ ์ฌ์ฉํด์ ์ฒ๋ฆฌํด์ ๊ทธ๋
์ค๋ธ์ ํธ๊ฐ ๋ช์ฒ๊ฐ๊ฐ ๋์ด๊ฐ๊ณ ์ด๋ฐ๊ฑฐ ์๋๋ฉด ๋๊ฐ์ผ๋ฉด ๊ฑ ๋ฃจํ ๋๋ ค๋ฒ๋ฆผ. ์ง์ง ํผํฌ๋จผ์ค๋ฅผ ๋ฐ์ ธ์ผ ํ๋ค๋ฉด ๋๊ฐ์ผ๋ฉด ํด์ฌ์ ์ผ๋ก ํ ๋ฏ. HashSet numbersFree <- ์ฌ์ฉ ํ ์ ์๋ ์ซ์ ์ ์ฅ์ฉ 1. ์ฒ์์ numbersFree ์ชฝ์ 0~10๋ฒ๊น์ง ์ซ์๋ฅผ ๋ค ์ ์ฅํจ. 2. ์ค๋ธ์ ํธ ์์ฑ์ numbersFree ์์ ์ซ์ ๋๋ค์ผ๋ก ํ๋ ์ ํํ๊ณ ์ ์์๋ ์ ๊ฑฐ 3. ์ซ์๊ฐ ๋ค์ ์ฌ์ฉ ๊ฐ๋ฅํ๊ฒ ๋๋ฉด numbersFree ์ชฝ์ผ๋ก ๋ฃ๊ธฐ. ์ด๋ฌ๋ฉด O(1)๋ก ๊ฐ๋ฅ
contain()์ ์ด์ฉํ๋ฉด ์ด์ค๋ฐ๋ณต๋ฌธ์ด ์๋๋ผ ๋ฐ๋ณต๋ฌธ ํ๋๋ง์ผ๋ก ๊ตฌํ ๋ ๊ฒ ๊ฐ์๋ฐ?
์ค ์ฝ๊ฒ ๊ตฌํ๋ ๊ฑฐ ๊ฐ๋ค ๊ทผ๋ฐ contains() ์ฐ๋ฉด ์ต์ ํ ๊ด๋ จํด์ for+while์ด๋ ๋๊ธด๊ฐ๊ธดํ ๋ฏ ใ ใ