[FE]๋ฌธ์ ๋๋ค ๊ตฌํ(1)
๋ฒํผ์ ๋๋ ์ ๋ ๋ฌธ์ ๊ฐ ์์ผ ์ ์๋ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ณ ์ ํ๋ค. ์ฐ์ ๋๋ค์ผ๋ก ๋ฌธ์ ๋ฅผ ์๊ธฐ ์ํด์๋ ํผ์ ์์ด์ธ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํด์ผ ํ๋ค. ์ฝ๋๋ ์๋์ ๊ฐ๋ค.
์ฃผ์ด์ง ๋ฐฐ์ด์ ๊ธธ์ด๋ฅผ ๊ธฐ์ค์ผ๋ก ์ญ์์ผ๋ก ๋ฐ๋ณตํ๋ฉด์ ๊ฐ ์ธ๋ฑ์ค์ ๋๋ค์ผ๋ก ์ ํ๋ ์ธ๋ฑ์ค๋ฅผ ๊ตํํ์ฌ ๋ฐฐ์ด์ ์๋๋ค. ์ด ๊ณผ์ ์ ํตํด ์ ํ๋ ๋ฌธ์ ๋ฐฐ์ด์ ์์๋ฅผ ๋๋คํ๊ฒ ์์ ์ ์๋ค.
์ ์ญ์์ผ๋ก ๋ฐ๋ณตํด์ผํ๋๋ฉด ๋ฌธ์ ๋ฅผ ์์ ๋ ๊ณ ๋ฅด๊ฒ ์์ด๊ฒ ํ๊ธฐ ์ํด์ ๊ทธ๋ ๋ค. ๋ง์ฝ ์ ๋ฑกํฅ์ผ๋ก ์๋๋ค๋ฉด ๋ฌธ์ ๊ฐ ๊ณ ๋ฅด๊ฒ ์์ด์ง ์์ ์๋ ์๊ธฐ ๋๋ฌธ์ด๋ค. ์ฆ, ์์ฐจ์ ์ผ๋ก ์์ด๊ฒ ํ์ ๊ฒฝ์ฐ์ ๊ธธ์ด๊ธฐ ์ฆ๊ฐ๊ฐ ๋๊ธฐ ๋๋ฌธ์ ์์ด๊ฒ ๋๋ ์ธ๋ฑ์ค ๋ฒ์๊ฐ ๋์ด๋๋ค. ๊ทธ๋ ๊ฒ ๊ฒฐ๊ณผ์ ์ผ๋ก ์ด์ ์ ์ด๋ฏธ ์์ธ ์์๋ค์ด ๋ค์ ํ๋ฒ ๋ ์์ด๊ฒ ๋๊ฑฐ๋ ์ค๋ณต๋ ์ ์๊ธฐ ๋๋ฌธ์ ์ญ์์ผ๋ก ๋ฐ๋ณตํ๊ฒ ํด์ผํ๋ค. ๋ค์์ผ๋ก ๋์ด๊ฐ์ ํด๋น ์๊ณ ๋ฆฌ์ฆ์ด ์ ์ฉ๋์ด์ผํ ๋ถ๋ถ์ ์ฝ๋๋ฅผ ์ดํด ๋ณด์.
๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ค๋ ๋ถ๋ถ์์ ๋ฌธ์ ๋ฅผ ๋ฏธ๋ฆฌ ์์์ ์ํ๋ ๊ธธ์ด๋งํผ ์ถ์ถ ํ ์ ์๊ฒ ์ฝ๋๋ฅผ ์์ฑ ํ๋ค. ํ์ง๋ง ์ฌ๊ธฐ์ ์์ฃผ ํฐ ๋จ์ ์ด ์๋ค. ๋ฐ๋ก ๋ฐ์์จ ๋ฌธ์ ์ ์ฒด๋ฅผ ์๋ ๋ค๋ ๋จ์ ์ด ์๋ค. ์ฆ, ๋ฐ์ดํฐ ์ ์ฒด๋ฅผ ์์ ๋ค์ ์ํ๋ ๊ธธ์ด๋งํผ ์ถ์ถ ํ๋ฉด ์ฌ์ฉ์๊ฐ ์ํ๋ ๋ฌธ์ ๋ค๋ง ์๋ ๊ฒ์ด ์๋๋ผ๋ ๋จ์ ์ด ์๋ค. ์ฝ๋๋ฅผ ์ง์ ์ธ๊ธํ๋ฉด์ ์ค๋ช ํ์๋ฉด shffeldData๋ ๋ฌธ์ ๊ฐ ์์ธ data๋ค์ ๋ด๊ณ ์๋ค. ์ด ๋ณ์๋ฅผ ๊ฐ์ง๊ณ setData์์ ์ํ๋ ๊ธธ์ด๋งํผ slice๋ฌธ์ผ๋ก ์๋ผ๋ด๋๋ฐ data ๋ชจ๋๋ฅผ ์์ด๋ด๋ ๊ณผ์ ์์ ๋ด๊ฐ ๋งํ ๋ฌธ์ ๋ค์ด ๋ฐ์ํ๋ ๊ฒ์ด๋ค. ๋ฐ๋ผ์ ๋ฌธ์ ๋ฅผ ๋จผ์ sliceํด์ ๋ณ์์ ๋ด์ ๋๊ณ ํด๋น ๋ณ์๋ฅผ ๊ฐ์ง๊ณ ์์ด๋ค๋ ๊ณผ์ ์ ๊ฑฐ์ณ์ผ ํ ๊ฒ ๊ฐ๋ค. ์ด๋ ๊ฒ ์ฝ๋๋ฅผ ์์ฑํ๊ฒ ๋๋ฉด ์์ ๋งํ ์ ํ๋ ๋ฌธ์ ์์์ ๋ฌธ์ ๋ฅผ ์์ด ๋ด๊ธฐ๊ฐ ์ด๋ ต๊ณ ๋ฒํผ ๊ตฌํ์ ์ด๋ ค์์ด ์๋ค. ๋ฐ๋ผ์ ๋ค์ ํฌ์คํ ๋ ์ด๋ฅผ ์์ ๋ณด์ ํ ์์ ์ด๋ค. ์ ์ฒด ์ฝ๋๋ ์๋์ ๊ฐ๋ค.
๋ค์ ํฌ์คํ ์์๋ ๋ฒํผ์ ์์ฑํด์ ๋ฌธ์ ๋ฅผ ์์ด๋ด๋ ๋ถ๋ถ์ ๊ตฌํํด ๋ณผ ๊ฒ์ด๋ค.
Shuffle Algorithm : ๋ฌด์์๋ก ์๊ธฐ ์๊ณ ๋ฆฌ์ฆ - Fisher-Yates Shuffle & Knuth Shuffle
Dana Daheen Lee<br>#iOS #Swift #CleanCode #Programming
daheenallwhite.github.io