λ‚˜λ¦„ μžλ°”μŠ€ν¬λ¦½νŠΈ 곡뢀λ₯Ό μ’€ ν–ˆλ‹€κ³  μƒκ°ν–ˆμ§€λ§Œ 막상 λ―Έμ…˜μ—μ„œ μ„€λͺ…ν•˜λŠ” ν•™μŠ΅ λͺ©ν‘œμ˜ μ»¬λ ‰μ…˜μ΄ 무엇인지 μžλ¬Έν–ˆμ„ λ•ŒλŠ” 말문이 λ§‰νž μˆ˜λ°–μ— μ—†μ—ˆλ‹€. μ΄λŠ” κ³§ λ‚΄ ν•™μŠ΅μ΄ μΆ©λΆ„μΉ˜ μ•Šμ•˜λ‹€λŠ” 방증이기도 ν•˜λ‹€. 이번 기회λ₯Ό 톡해 보닀 κ°œλ…λ“€μ— μΆ©μ‹€ν•΄μ•Ό λ‹€λ₯Έ 문제λ₯Ό 해결함에 μžˆμ–΄μ„œλ„ ν™œμš©ν•  수 μžˆλ‹€λŠ” 것을 κΉ¨λ‹¬μ•˜λ‹€. λ˜ν•œ Weakset, Weakmap의 쑴재 자체λ₯Ό λͺ¨λ₯΄κ³  μžˆμ—ˆλŠ”λ° κ°€λΉ„μ§€ μ½œλ ‰ν„°μ˜ μ—­ν• κ³Ό μ—°κ²°λ˜μ–΄ μžˆλŠ” μžλ£Œκ΅¬μ‘°λŠ” 처음 μ•Œκ²Œ λ˜μ—ˆλ‹€. μ΄λŸ¬ν•œ μ΅œμ ν™”μ— 효율적인 자료ꡬ쑰 자체λ₯Ό λͺ¨λ₯΄κ³  μžˆμ—ˆλ‹€λŠ” 사싀에 ν•™μŠ΅μ΄ 더 ν•„μš”ν•˜λ‹€κ³  μƒκ°ν•˜λ©΄μ„œλ„ ν˜„μž¬ ν•˜κ³  μžˆλŠ” ν”„λ‘œμ νŠΈμ—μ„œ μ΄λŸ¬ν•œ 자료ꡬ쑰λ₯Ό μ‚¬μš©ν•  수 μžˆμ„μ§€μ— λŒ€ν•΄μ„œ μƒκ°ν•΄λ³΄λŠ” 것도 쒋은 방식일 것 κ°™λ‹€.

λ°•λ―Έλ¦Ό μˆ˜λ£ŒμƒλΆ„μ˜ 클래슀둜 κ΅¬ν˜„ν•œ 점이 λˆˆμ— λ„μ—ˆλ‹€. λ‚˜μ˜ 경우 ν•¨μˆ˜λ₯Ό μ„ΈλΆ„ν™”ν•œλ‹€λŠ” μƒκ°μ—λ§Œ μ‚¬λ‘œμž‘ν˜€ λ”°λ‘œ 클래슀λ₯Ό κ΅¬ν˜„ν•  생각은 ν•˜μ§€ λͺ»ν–ˆλŠ”λ° 클래슀λ₯Ό κ΅¬ν˜„ν•¨μœΌλ‘œμ¨ λ‹€μ–‘ν•œ 사닀리 κ²Œμž„ 객체λ₯Ό λ§Œλ“€ 수 있고, 각 λ©”μ†Œλ“œκ°€ λ…λ¦½μ μœΌλ‘œ μž‘μš©ν•˜κΈ° λ•Œλ¬Έμ— 항상 μ˜λ„ν•œ λŒ€λ‘œ μ›€μ§μ΄λŠ” μ˜ˆμΈ‘κ°€λŠ₯μ„±κ³Ό μ½”λ“œμ˜ 응집도λ₯Ό 높일 수 μžˆμ–΄ 훨씬 보기 쒋은 ꡬ쑰라고 μƒκ°ν•œλ‹€. λ˜ν•œ 클래슀 내에 μžˆλŠ” 의 역할을 μ•Œμ§€ λͺ»ν–ˆλŠ”λ°, private ν•„λ“œλ₯Ό μ˜λ―Έν•œλ‹€λŠ” 것을 μ•Œκ²Œ λ˜μ—ˆλ‹€. 이λ₯Ό 톡해 클래슀 λ‚΄λΆ€μ—μ„œλ§Œ 읽고 μ“°λ©΄μ„œ μ™ΈλΆ€μ—μ„œ 보이지 μ•Šλ„λ‘ λ§Œλ“€ 수 μžˆλ‹€λŠ” 사싀을 처음 μ•Œκ²Œ λ˜μ—ˆλ‹€.

μˆ˜λ£Œμƒμ˜ 접근법을 보고 κ°€μž₯ 처음으둜 reset() ν•¨μˆ˜λ₯Ό κ°œμ„ ν•΄λ³΄μ•˜λ‹€. λ‚΄κ°€ μ“΄ μ½”λ“œμ—μ„œ 처음 resetμ—μ„œ 이쀑루프문을 톡해 2차원 배열을 λ§Œλ“€κΈ° λŒ€λ¬Έμ— λ‹€μ†Œ 가독성이 비ꡐ적 λ–¨μ–΄μ§€λŠ” 뢀뢄이 μžˆμ–΄λ³΄μ˜€λ‹€. 이에 Array.from 정적 λ©”μ„œλ“œλ₯Ό 톡해 2차원 배열을 μƒμ„±ν•˜λŠ” 문을 보닀 κ°„κ²°ν•˜κ²Œ μž‘μ„±ν•˜μ˜€λ‹€. λ‹€μŒμœΌλ‘œ μ—λŸ¬ 쑰건을 μ„€μ •ν•˜μ—¬ reset() 전에 randomFill() ν•¨μˆ˜λ₯Ό 호좜 ν•  경우λ₯Ό λŒ€λΉ„ν•˜μ—¬ μ΄λŸ¬ν•œ κ²½μš°μ— μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ μ—λŸ¬ 전에 μ‚¬μ „μ μœΌλ‘œ μ°¨λ‹¨ν•˜μ˜€λ‹€. λ§ˆμ§€λ§‰μ—λŠ” 전체적인 μ‚¬λ‹€λ¦¬μ˜ κΈ°λŠ₯듀이 ν•˜λ‚˜μ˜ 클래슀 μ•ˆμœΌλ‘œ λͺ¨λ‘ λ“€μ–΄κ°€ μ‚¬μš©λ  수 μžˆλ„λ‘ λ¦¬νŒ©ν† λ§ν•˜μ˜€λ‹€.