oh-my-oop 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (660) hide show
  1. package/MCP_STRUCTURE.md +301 -0
  2. package/README.md +167 -0
  3. package/SCOPE.md +27 -0
  4. package/dist/application/discovery.d.ts +133 -0
  5. package/dist/application/discovery.js +62 -0
  6. package/dist/application/discovery.js.map +1 -0
  7. package/dist/cli.d.ts +2 -0
  8. package/dist/cli.js +80 -0
  9. package/dist/cli.js.map +1 -0
  10. package/dist/config.d.ts +16 -0
  11. package/dist/config.js +32 -0
  12. package/dist/config.js.map +1 -0
  13. package/dist/domain/collaborators.d.ts +2 -0
  14. package/dist/domain/collaborators.js +26 -0
  15. package/dist/domain/collaborators.js.map +1 -0
  16. package/dist/domain/ids.d.ts +4 -0
  17. package/dist/domain/ids.js +23 -0
  18. package/dist/domain/ids.js.map +1 -0
  19. package/dist/domain/model.d.ts +71 -0
  20. package/dist/domain/model.js +2 -0
  21. package/dist/domain/model.js.map +1 -0
  22. package/dist/domain/schemas.d.ts +213 -0
  23. package/dist/domain/schemas.js +79 -0
  24. package/dist/domain/schemas.js.map +1 -0
  25. package/dist/domain/stereotypes.d.ts +7 -0
  26. package/dist/domain/stereotypes.js +65 -0
  27. package/dist/domain/stereotypes.js.map +1 -0
  28. package/dist/index.d.ts +2 -0
  29. package/dist/index.js +21 -0
  30. package/dist/index.js.map +1 -0
  31. package/dist/io/classStore.d.ts +9 -0
  32. package/dist/io/classStore.js +39 -0
  33. package/dist/io/classStore.js.map +1 -0
  34. package/dist/io/collaborationStore.d.ts +7 -0
  35. package/dist/io/collaborationStore.js +32 -0
  36. package/dist/io/collaborationStore.js.map +1 -0
  37. package/dist/io/design.d.ts +3 -0
  38. package/dist/io/design.js +22 -0
  39. package/dist/io/design.js.map +1 -0
  40. package/dist/io/designIndex.d.ts +6 -0
  41. package/dist/io/designIndex.js +49 -0
  42. package/dist/io/designIndex.js.map +1 -0
  43. package/dist/io/frontmatter.d.ts +8 -0
  44. package/dist/io/frontmatter.js +31 -0
  45. package/dist/io/frontmatter.js.map +1 -0
  46. package/dist/io/history.d.ts +10 -0
  47. package/dist/io/history.js +38 -0
  48. package/dist/io/history.js.map +1 -0
  49. package/dist/io/useCaseStore.d.ts +8 -0
  50. package/dist/io/useCaseStore.js +36 -0
  51. package/dist/io/useCaseStore.js.map +1 -0
  52. package/dist/io/workspace.d.ts +14 -0
  53. package/dist/io/workspace.js +82 -0
  54. package/dist/io/workspace.js.map +1 -0
  55. package/dist/oop/commands.d.ts +446 -0
  56. package/dist/oop/commands.js +319 -0
  57. package/dist/oop/commands.js.map +1 -0
  58. package/dist/oop/conformance.d.ts +16 -0
  59. package/dist/oop/conformance.js +30 -0
  60. package/dist/oop/conformance.js.map +1 -0
  61. package/dist/prompts/discovery.d.ts +2 -0
  62. package/dist/prompts/discovery.js +41 -0
  63. package/dist/prompts/discovery.js.map +1 -0
  64. package/dist/prompts/imagineWithoutController.d.ts +2 -0
  65. package/dist/prompts/imagineWithoutController.js +75 -0
  66. package/dist/prompts/imagineWithoutController.js.map +1 -0
  67. package/dist/prompts/index.d.ts +2 -0
  68. package/dist/prompts/index.js +17 -0
  69. package/dist/prompts/index.js.map +1 -0
  70. package/dist/prompts/phasePressureTest.d.ts +2 -0
  71. package/dist/prompts/phasePressureTest.js +69 -0
  72. package/dist/prompts/phasePressureTest.js.map +1 -0
  73. package/dist/prompts/rddIntro.d.ts +2 -0
  74. package/dist/prompts/rddIntro.js +53 -0
  75. package/dist/prompts/rddIntro.js.map +1 -0
  76. package/dist/prompts/review.d.ts +2 -0
  77. package/dist/prompts/review.js +45 -0
  78. package/dist/prompts/review.js.map +1 -0
  79. package/dist/prompts/stateMachineIntrospect.d.ts +2 -0
  80. package/dist/prompts/stateMachineIntrospect.js +80 -0
  81. package/dist/prompts/stateMachineIntrospect.js.map +1 -0
  82. package/dist/prompts/tellDontAskRephrase.d.ts +2 -0
  83. package/dist/prompts/tellDontAskRephrase.js +66 -0
  84. package/dist/prompts/tellDontAskRephrase.js.map +1 -0
  85. package/dist/render/diff.d.ts +21 -0
  86. package/dist/render/diff.js +84 -0
  87. package/dist/render/diff.js.map +1 -0
  88. package/dist/render/mermaid.d.ts +24 -0
  89. package/dist/render/mermaid.js +53 -0
  90. package/dist/render/mermaid.js.map +1 -0
  91. package/dist/render/sideBySide.d.ts +14 -0
  92. package/dist/render/sideBySide.js +91 -0
  93. package/dist/render/sideBySide.js.map +1 -0
  94. package/dist/resources/index.d.ts +2 -0
  95. package/dist/resources/index.js +349 -0
  96. package/dist/resources/index.js.map +1 -0
  97. package/dist/server.d.ts +2 -0
  98. package/dist/server.js +22 -0
  99. package/dist/server.js.map +1 -0
  100. package/dist/tools/alternatives.d.ts +2 -0
  101. package/dist/tools/alternatives.js +9 -0
  102. package/dist/tools/alternatives.js.map +1 -0
  103. package/dist/tools/classes.d.ts +2 -0
  104. package/dist/tools/classes.js +13 -0
  105. package/dist/tools/classes.js.map +1 -0
  106. package/dist/tools/collaborations.d.ts +2 -0
  107. package/dist/tools/collaborations.js +8 -0
  108. package/dist/tools/collaborations.js.map +1 -0
  109. package/dist/tools/compare.d.ts +2 -0
  110. package/dist/tools/compare.js +9 -0
  111. package/dist/tools/compare.js.map +1 -0
  112. package/dist/tools/conformance.d.ts +3 -0
  113. package/dist/tools/conformance.js +11 -0
  114. package/dist/tools/conformance.js.map +1 -0
  115. package/dist/tools/diagram.d.ts +2 -0
  116. package/dist/tools/diagram.js +9 -0
  117. package/dist/tools/diagram.js.map +1 -0
  118. package/dist/tools/discovery.d.ts +2 -0
  119. package/dist/tools/discovery.js +23 -0
  120. package/dist/tools/discovery.js.map +1 -0
  121. package/dist/tools/index.d.ts +2 -0
  122. package/dist/tools/index.js +27 -0
  123. package/dist/tools/index.js.map +1 -0
  124. package/dist/tools/init.d.ts +2 -0
  125. package/dist/tools/init.js +9 -0
  126. package/dist/tools/init.js.map +1 -0
  127. package/dist/tools/oop.d.ts +9 -0
  128. package/dist/tools/oop.js +26 -0
  129. package/dist/tools/oop.js.map +1 -0
  130. package/dist/tools/responsibilities.d.ts +2 -0
  131. package/dist/tools/responsibilities.js +13 -0
  132. package/dist/tools/responsibilities.js.map +1 -0
  133. package/dist/tools/state.d.ts +2 -0
  134. package/dist/tools/state.js +8 -0
  135. package/dist/tools/state.js.map +1 -0
  136. package/dist/tools/useCases.d.ts +2 -0
  137. package/dist/tools/useCases.js +18 -0
  138. package/dist/tools/useCases.js.map +1 -0
  139. package/dist/tools/validate.d.ts +2 -0
  140. package/dist/tools/validate.js +9 -0
  141. package/dist/tools/validate.js.map +1 -0
  142. package/dist/tradeoff/engine.d.ts +61 -0
  143. package/dist/tradeoff/engine.js +171 -0
  144. package/dist/tradeoff/engine.js.map +1 -0
  145. package/dist/tradeoff/heuristics/classSplit.d.ts +3 -0
  146. package/dist/tradeoff/heuristics/classSplit.js +94 -0
  147. package/dist/tradeoff/heuristics/classSplit.js.map +1 -0
  148. package/dist/tradeoff/heuristics/collaborationShape.d.ts +2 -0
  149. package/dist/tradeoff/heuristics/collaborationShape.js +82 -0
  150. package/dist/tradeoff/heuristics/collaborationShape.js.map +1 -0
  151. package/dist/tradeoff/heuristics/collectionShape.d.ts +2 -0
  152. package/dist/tradeoff/heuristics/collectionShape.js +113 -0
  153. package/dist/tradeoff/heuristics/collectionShape.js.map +1 -0
  154. package/dist/tradeoff/heuristics/dualSubjectComparison.d.ts +2 -0
  155. package/dist/tradeoff/heuristics/dualSubjectComparison.js +114 -0
  156. package/dist/tradeoff/heuristics/dualSubjectComparison.js.map +1 -0
  157. package/dist/tradeoff/heuristics/errorHandling.d.ts +2 -0
  158. package/dist/tradeoff/heuristics/errorHandling.js +110 -0
  159. package/dist/tradeoff/heuristics/errorHandling.js.map +1 -0
  160. package/dist/tradeoff/heuristics/responsibilitySplit.d.ts +23 -0
  161. package/dist/tradeoff/heuristics/responsibilitySplit.js +183 -0
  162. package/dist/tradeoff/heuristics/responsibilitySplit.js.map +1 -0
  163. package/dist/tradeoff/heuristics/stereotypeChoice.d.ts +2 -0
  164. package/dist/tradeoff/heuristics/stereotypeChoice.js +23 -0
  165. package/dist/tradeoff/heuristics/stereotypeChoice.js.map +1 -0
  166. package/dist/tradeoff/heuristics/strategyOrPolicy.d.ts +2 -0
  167. package/dist/tradeoff/heuristics/strategyOrPolicy.js +110 -0
  168. package/dist/tradeoff/heuristics/strategyOrPolicy.js.map +1 -0
  169. package/dist/tradeoff/heuristics/valueObjectShape.d.ts +2 -0
  170. package/dist/tradeoff/heuristics/valueObjectShape.js +111 -0
  171. package/dist/tradeoff/heuristics/valueObjectShape.js.map +1 -0
  172. package/dist/tradeoff/templates.d.ts +2 -0
  173. package/dist/tradeoff/templates.js +33 -0
  174. package/dist/tradeoff/templates.js.map +1 -0
  175. package/dist/util/log.d.ts +1 -0
  176. package/dist/util/log.js +7 -0
  177. package/dist/util/log.js.map +1 -0
  178. package/dist/util/mcp.d.ts +4 -0
  179. package/dist/util/mcp.js +18 -0
  180. package/dist/util/mcp.js.map +1 -0
  181. package/dist/validate/cohesion.d.ts +3 -0
  182. package/dist/validate/cohesion.js +88 -0
  183. package/dist/validate/cohesion.js.map +1 -0
  184. package/dist/validate/collectionWrapper.d.ts +3 -0
  185. package/dist/validate/collectionWrapper.js +131 -0
  186. package/dist/validate/collectionWrapper.js.map +1 -0
  187. package/dist/validate/coupling.d.ts +3 -0
  188. package/dist/validate/coupling.js +47 -0
  189. package/dist/validate/coupling.js.map +1 -0
  190. package/dist/validate/cycle.d.ts +3 -0
  191. package/dist/validate/cycle.js +101 -0
  192. package/dist/validate/cycle.js.map +1 -0
  193. package/dist/validate/dataDuplication.d.ts +3 -0
  194. package/dist/validate/dataDuplication.js +150 -0
  195. package/dist/validate/dataDuplication.js.map +1 -0
  196. package/dist/validate/dependencyDirection.d.ts +3 -0
  197. package/dist/validate/dependencyDirection.js +106 -0
  198. package/dist/validate/dependencyDirection.js.map +1 -0
  199. package/dist/validate/dualUseKnowing.d.ts +3 -0
  200. package/dist/validate/dualUseKnowing.js +137 -0
  201. package/dist/validate/dualUseKnowing.js.map +1 -0
  202. package/dist/validate/emptyObjectFill.d.ts +3 -0
  203. package/dist/validate/emptyObjectFill.js +119 -0
  204. package/dist/validate/emptyObjectFill.js.map +1 -0
  205. package/dist/validate/findings.d.ts +22 -0
  206. package/dist/validate/findings.js +12 -0
  207. package/dist/validate/findings.js.map +1 -0
  208. package/dist/validate/functionDecompositionExcess.d.ts +3 -0
  209. package/dist/validate/functionDecompositionExcess.js +120 -0
  210. package/dist/validate/functionDecompositionExcess.js.map +1 -0
  211. package/dist/validate/functionNotObject.d.ts +3 -0
  212. package/dist/validate/functionNotObject.js +80 -0
  213. package/dist/validate/functionNotObject.js.map +1 -0
  214. package/dist/validate/godObject.d.ts +6 -0
  215. package/dist/validate/godObject.js +76 -0
  216. package/dist/validate/godObject.js.map +1 -0
  217. package/dist/validate/presentationInDomain.d.ts +3 -0
  218. package/dist/validate/presentationInDomain.js +57 -0
  219. package/dist/validate/presentationInDomain.js.map +1 -0
  220. package/dist/validate/primitiveWrapper.d.ts +3 -0
  221. package/dist/validate/primitiveWrapper.js +106 -0
  222. package/dist/validate/primitiveWrapper.js.map +1 -0
  223. package/dist/validate/rules.d.ts +24 -0
  224. package/dist/validate/rules.js +269 -0
  225. package/dist/validate/rules.js.map +1 -0
  226. package/dist/validate/singletonStatefulHolder.d.ts +3 -0
  227. package/dist/validate/singletonStatefulHolder.js +128 -0
  228. package/dist/validate/singletonStatefulHolder.js.map +1 -0
  229. package/dist/validate/strategyAsymmetry.d.ts +3 -0
  230. package/dist/validate/strategyAsymmetry.js +131 -0
  231. package/dist/validate/strategyAsymmetry.js.map +1 -0
  232. package/dist/validate/testability.d.ts +5 -0
  233. package/dist/validate/testability.js +157 -0
  234. package/dist/validate/testability.js.map +1 -0
  235. package/dist/validate/vagueName.d.ts +3 -0
  236. package/dist/validate/vagueName.js +136 -0
  237. package/dist/validate/vagueName.js.map +1 -0
  238. package/dist/validate/validationLocation.d.ts +3 -0
  239. package/dist/validate/validationLocation.js +120 -0
  240. package/dist/validate/validationLocation.js.map +1 -0
  241. package/lessons/STYLE_GUIDE.md +304 -0
  242. package/lessons/woowacourse-kotlin-blackjack/2chang5/33-1/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +293 -0
  243. package/lessons/woowacourse-kotlin-blackjack/Choisehyeon/52-2/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +106 -0
  244. package/lessons/woowacourse-kotlin-blackjack/Choisehyeon/9-1/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +282 -0
  245. package/lessons/woowacourse-kotlin-blackjack/DYGames/14-1/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +182 -0
  246. package/lessons/woowacourse-kotlin-blackjack/DYGames/37-2/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +122 -0
  247. package/lessons/woowacourse-kotlin-blackjack/EmilyCh0/12-1/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +117 -0
  248. package/lessons/woowacourse-kotlin-blackjack/EmilyCh0/38-2/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +291 -0
  249. package/lessons/woowacourse-kotlin-blackjack/HANDOVER.md +1475 -0
  250. package/lessons/woowacourse-kotlin-blackjack/HamBeomJoon/119-1/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +251 -0
  251. package/lessons/woowacourse-kotlin-blackjack/HamBeomJoon/137-2/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +459 -0
  252. package/lessons/woowacourse-kotlin-blackjack/Hevton/100-2/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +282 -0
  253. package/lessons/woowacourse-kotlin-blackjack/Hevton/82-1/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +303 -0
  254. package/lessons/woowacourse-kotlin-blackjack/Hogu59/71-1/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +134 -0
  255. package/lessons/woowacourse-kotlin-blackjack/Hogu59/96-2/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +323 -0
  256. package/lessons/woowacourse-kotlin-blackjack/JoYehyun99/66-1/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +210 -0
  257. package/lessons/woowacourse-kotlin-blackjack/Junyoung-WON/101-2/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +191 -0
  258. package/lessons/woowacourse-kotlin-blackjack/Junyoung-WON/80-1/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +253 -0
  259. package/lessons/woowacourse-kotlin-blackjack/Leeyerin0210/108-1/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +516 -0
  260. package/lessons/woowacourse-kotlin-blackjack/Leeyerin0210/133-2/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +541 -0
  261. package/lessons/woowacourse-kotlin-blackjack/RightHennessy/22-1/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +278 -0
  262. package/lessons/woowacourse-kotlin-blackjack/RightHennessy/48-2/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +188 -0
  263. package/lessons/woowacourse-kotlin-blackjack/SeongHoonC/16-1/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +228 -0
  264. package/lessons/woowacourse-kotlin-blackjack/SeongHoonC/54-2/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +227 -0
  265. package/lessons/woowacourse-kotlin-blackjack/Yunseok-Nam/76-1/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +279 -0
  266. package/lessons/woowacourse-kotlin-blackjack/Yunseok-Nam/86-2/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +203 -0
  267. package/lessons/woowacourse-kotlin-blackjack/aprilgom/105-2/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +162 -0
  268. package/lessons/woowacourse-kotlin-blackjack/aprilgom/64-1/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +279 -0
  269. package/lessons/woowacourse-kotlin-blackjack/boogi-woogi/18-1/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +188 -0
  270. package/lessons/woowacourse-kotlin-blackjack/boogi-woogi/36-2/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +769 -0
  271. package/lessons/woowacourse-kotlin-blackjack/briandr97/19-1/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +226 -0
  272. package/lessons/woowacourse-kotlin-blackjack/briandr97/59-2/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +193 -0
  273. package/lessons/woowacourse-kotlin-blackjack/chaehyuns/70-1/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +175 -0
  274. package/lessons/woowacourse-kotlin-blackjack/chaehyuns/98-2/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +206 -0
  275. package/lessons/woowacourse-kotlin-blackjack/chanho0908/123-1/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +277 -0
  276. package/lessons/woowacourse-kotlin-blackjack/chanho0908/150-2/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +219 -0
  277. package/lessons/woowacourse-kotlin-blackjack/chws0508/26-1/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +259 -0
  278. package/lessons/woowacourse-kotlin-blackjack/chws0508/43-2/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +189 -0
  279. package/lessons/woowacourse-kotlin-blackjack/cucumber99/109-1/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +351 -0
  280. package/lessons/woowacourse-kotlin-blackjack/cucumber99/149-2/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +147 -0
  281. package/lessons/woowacourse-kotlin-blackjack/devfeijoa/121-1/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +168 -0
  282. package/lessons/woowacourse-kotlin-blackjack/devfeijoa/153-2/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +116 -0
  283. package/lessons/woowacourse-kotlin-blackjack/doabletuple/126-1/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +680 -0
  284. package/lessons/woowacourse-kotlin-blackjack/doabletuple/142-2/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +739 -0
  285. package/lessons/woowacourse-kotlin-blackjack/donghyun81/116-1/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +297 -0
  286. package/lessons/woowacourse-kotlin-blackjack/donghyun81/147-2/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +244 -0
  287. package/lessons/woowacourse-kotlin-blackjack/dpcks0509/78-1/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +232 -0
  288. package/lessons/woowacourse-kotlin-blackjack/dpcks0509/88-2/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +137 -0
  289. package/lessons/woowacourse-kotlin-blackjack/etama123/112-1/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +269 -0
  290. package/lessons/woowacourse-kotlin-blackjack/etama123/148-2/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +240 -0
  291. package/lessons/woowacourse-kotlin-blackjack/gaeun5744/102-2/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +146 -0
  292. package/lessons/woowacourse-kotlin-blackjack/gaeun5744/69-1/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +224 -0
  293. package/lessons/woowacourse-kotlin-blackjack/gahyunkim/118-1/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +397 -0
  294. package/lessons/woowacourse-kotlin-blackjack/gahyunkim/141-2/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +215 -0
  295. package/lessons/woowacourse-kotlin-blackjack/giovannijunseokim/106-1/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +395 -0
  296. package/lessons/woowacourse-kotlin-blackjack/giovannijunseokim/134-2/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +219 -0
  297. package/lessons/woowacourse-kotlin-blackjack/haeum808/62-1/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +230 -0
  298. package/lessons/woowacourse-kotlin-blackjack/haeum808/89-2/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +169 -0
  299. package/lessons/woowacourse-kotlin-blackjack/hwannow/110-1/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +221 -0
  300. package/lessons/woowacourse-kotlin-blackjack/hwannow/132-2/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +573 -0
  301. package/lessons/woowacourse-kotlin-blackjack/hxeyexn/103-2/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +188 -0
  302. package/lessons/woowacourse-kotlin-blackjack/hxeyexn/81-1/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +301 -0
  303. package/lessons/woowacourse-kotlin-blackjack/hyemdooly/21-1/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +613 -0
  304. package/lessons/woowacourse-kotlin-blackjack/hyemdooly/35-2/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +691 -0
  305. package/lessons/woowacourse-kotlin-blackjack/hyunji1203/13-1/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +206 -0
  306. package/lessons/woowacourse-kotlin-blackjack/ii2001/79-1/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +153 -0
  307. package/lessons/woowacourse-kotlin-blackjack/ii2001/85-2/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +318 -0
  308. package/lessons/woowacourse-kotlin-blackjack/ijh1298/128-1/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +250 -0
  309. package/lessons/woowacourse-kotlin-blackjack/ijh1298/135-2/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +269 -0
  310. package/lessons/woowacourse-kotlin-blackjack/inseonyun/28-1/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +346 -0
  311. package/lessons/woowacourse-kotlin-blackjack/inseonyun/49-2/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +360 -0
  312. package/lessons/woowacourse-kotlin-blackjack/ippnsj/30-1/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +152 -0
  313. package/lessons/woowacourse-kotlin-blackjack/ippnsj/42-2/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +213 -0
  314. package/lessons/woowacourse-kotlin-blackjack/jaeyeongjo/73-1/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +247 -0
  315. package/lessons/woowacourse-kotlin-blackjack/jaeyeongjo/87-2/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +900 -0
  316. package/lessons/woowacourse-kotlin-blackjack/jerry8282/125-1/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +248 -0
  317. package/lessons/woowacourse-kotlin-blackjack/jerry8282/151-2/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +243 -0
  318. package/lessons/woowacourse-kotlin-blackjack/jinuemong/63-1/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +281 -0
  319. package/lessons/woowacourse-kotlin-blackjack/jinuemong/92-2/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +283 -0
  320. package/lessons/woowacourse-kotlin-blackjack/jiyuneel/113-1/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +348 -0
  321. package/lessons/woowacourse-kotlin-blackjack/jiyuneel/140-2/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +265 -0
  322. package/lessons/woowacourse-kotlin-blackjack/junjange/61-1/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +270 -0
  323. package/lessons/woowacourse-kotlin-blackjack/junjange/93-2/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +465 -0
  324. package/lessons/woowacourse-kotlin-blackjack/junseo511/107-1/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +296 -0
  325. package/lessons/woowacourse-kotlin-blackjack/junseo511/145-2/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +316 -0
  326. package/lessons/woowacourse-kotlin-blackjack/ki960213/11-1/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +175 -0
  327. package/lessons/woowacourse-kotlin-blackjack/kimhm0728/72-1/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +458 -0
  328. package/lessons/woowacourse-kotlin-blackjack/kimhm0728/97-2/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +225 -0
  329. package/lessons/woowacourse-kotlin-blackjack/kkosang/68-1/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +221 -0
  330. package/lessons/woowacourse-kotlin-blackjack/kkosang/94-2/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +158 -0
  331. package/lessons/woowacourse-kotlin-blackjack/kmkim2689/65-1/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +252 -0
  332. package/lessons/woowacourse-kotlin-blackjack/kmkim2689/90-2/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +460 -0
  333. package/lessons/woowacourse-kotlin-blackjack/krrong/32-1/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +216 -0
  334. package/lessons/woowacourse-kotlin-blackjack/krrong/46-2/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +285 -0
  335. package/lessons/woowacourse-kotlin-blackjack/m6z1/122-1/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +177 -0
  336. package/lessons/woowacourse-kotlin-blackjack/m6z1/144-2/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +155 -0
  337. package/lessons/woowacourse-kotlin-blackjack/medAndro/130-1/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +683 -0
  338. package/lessons/woowacourse-kotlin-blackjack/medAndro/143-2/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +678 -0
  339. package/lessons/woowacourse-kotlin-blackjack/moondev03/114-1/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +262 -0
  340. package/lessons/woowacourse-kotlin-blackjack/moondev03/131-2/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +498 -0
  341. package/lessons/woowacourse-kotlin-blackjack/murjune/77-1/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +287 -0
  342. package/lessons/woowacourse-kotlin-blackjack/murjune/91-2/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +280 -0
  343. package/lessons/woowacourse-kotlin-blackjack/no1msh/31-1/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +250 -0
  344. package/lessons/woowacourse-kotlin-blackjack/otter66/24-1/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +302 -0
  345. package/lessons/woowacourse-kotlin-blackjack/otter66/58-2/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +391 -0
  346. package/lessons/woowacourse-kotlin-blackjack/oungsi2000/111-1/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +253 -0
  347. package/lessons/woowacourse-kotlin-blackjack/oungsi2000/136-2/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +540 -0
  348. package/lessons/woowacourse-kotlin-blackjack/parkjiminnnn/117-1/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +819 -0
  349. package/lessons/woowacourse-kotlin-blackjack/parkjiminnnn/139-2/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +683 -0
  350. package/lessons/woowacourse-kotlin-blackjack/pingu244/20-1/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +258 -0
  351. package/lessons/woowacourse-kotlin-blackjack/pingu244/41-2/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +171 -0
  352. package/lessons/woowacourse-kotlin-blackjack/re4rk/34-2/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +289 -0
  353. package/lessons/woowacourse-kotlin-blackjack/re4rk/8-1/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +297 -0
  354. package/lessons/woowacourse-kotlin-blackjack/rhkrwngud445/17-1/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +279 -0
  355. package/lessons/woowacourse-kotlin-blackjack/rhkrwngud445/50-2/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +145 -0
  356. package/lessons/woowacourse-kotlin-blackjack/rhthrhrl0/23-1/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +253 -0
  357. package/lessons/woowacourse-kotlin-blackjack/rhthrhrl0/39-2/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +238 -0
  358. package/lessons/woowacourse-kotlin-blackjack/rosemin928/129-1/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +726 -0
  359. package/lessons/woowacourse-kotlin-blackjack/rosemin928/138-2/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +845 -0
  360. package/lessons/woowacourse-kotlin-blackjack/s6m1n/67-1/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +220 -0
  361. package/lessons/woowacourse-kotlin-blackjack/s6m1n/99-2/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +229 -0
  362. package/lessons/woowacourse-kotlin-blackjack/s9hn/10-1/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +284 -0
  363. package/lessons/woowacourse-kotlin-blackjack/sh1mj1/75-1/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +224 -0
  364. package/lessons/woowacourse-kotlin-blackjack/songpink/74-1/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +238 -0
  365. package/lessons/woowacourse-kotlin-blackjack/songpink/95-2/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +216 -0
  366. package/lessons/woowacourse-kotlin-blackjack/sujin9/15-1/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +132 -0
  367. package/lessons/woowacourse-kotlin-blackjack/sujin9/47-2/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +265 -0
  368. package/lessons/woowacourse-kotlin-blackjack/tmdgh1592/29-1/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +305 -0
  369. package/lessons/woowacourse-kotlin-blackjack/tmdgh1592/51-2/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +278 -0
  370. package/lessons/woowacourse-kotlin-blackjack/tobae-time/115-1/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +305 -0
  371. package/lessons/woowacourse-kotlin-blackjack/tobae-time/154-2/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +298 -0
  372. package/lessons/woowacourse-kotlin-blackjack/whk06061/25-1/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +235 -0
  373. package/lessons/woowacourse-kotlin-blackjack/whk06061/53-2/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +130 -0
  374. package/lessons/woowacourse-kotlin-blackjack/wondroid-world/124-1/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +486 -0
  375. package/lessons/woowacourse-kotlin-blackjack/wondroid-world/152-2/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +482 -0
  376. package/lessons/woowacourse-kotlin-blackjack/yrsel/120-1/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +194 -0
  377. package/lessons/woowacourse-kotlin-blackjack/yrsel/146-2/353/213/250/352/263/204-/353/270/224/353/236/231/354/236/255.md +444 -0
  378. package/lessons/woowacourse-kotlin-lotto/2chang5/27-1/353/213/250/352/263/204-/353/241/234/353/230/220.md +155 -0
  379. package/lessons/woowacourse-kotlin-lotto/2chang5/52-2/353/213/250/352/263/204-/353/241/234/353/230/220.md +187 -0
  380. package/lessons/woowacourse-kotlin-lotto/Choisehyeon/14-1/353/213/250/352/263/204-/353/241/234/353/230/220.md +206 -0
  381. package/lessons/woowacourse-kotlin-lotto/Choisehyeon/47-2/353/213/250/352/263/204-/353/241/234/353/230/220.md +119 -0
  382. package/lessons/woowacourse-kotlin-lotto/DYGames/2-1/353/213/250/352/263/204-/353/241/234/353/230/220.md +83 -0
  383. package/lessons/woowacourse-kotlin-lotto/DYGames/34-2/353/213/250/352/263/204-/353/241/234/353/230/220.md +88 -0
  384. package/lessons/woowacourse-kotlin-lotto/EmilyCh0/12-1/353/213/250/352/263/204-/353/241/234/353/230/220.md +107 -0
  385. package/lessons/woowacourse-kotlin-lotto/EmilyCh0/40-2/353/213/250/352/263/204-/353/241/234/353/230/220.md +135 -0
  386. package/lessons/woowacourse-kotlin-lotto/HANDOVER.md +217 -0
  387. package/lessons/woowacourse-kotlin-lotto/HamBeomJoon/121-1/353/213/250/352/263/204-/353/241/234/353/230/220.md +66 -0
  388. package/lessons/woowacourse-kotlin-lotto/HamBeomJoon/139-2/353/213/250/352/263/204-/353/241/234/353/230/220.md +75 -0
  389. package/lessons/woowacourse-kotlin-lotto/Hevton/76-1/353/213/250/352/263/204-/353/241/234/353/230/220.md +21 -0
  390. package/lessons/woowacourse-kotlin-lotto/Hevton/92-2/353/213/250/352/263/204-/353/241/234/353/230/220.md +122 -0
  391. package/lessons/woowacourse-kotlin-lotto/Hogu59/100-2/353/213/250/352/263/204-/353/241/234/353/230/220.md +110 -0
  392. package/lessons/woowacourse-kotlin-lotto/Hogu59/68-1/353/213/250/352/263/204-/353/241/234/353/230/220.md +84 -0
  393. package/lessons/woowacourse-kotlin-lotto/JoYehyun99/60-1/353/213/250/352/263/204-/353/241/234/353/230/220.md +176 -0
  394. package/lessons/woowacourse-kotlin-lotto/JoYehyun99/96-2/353/213/250/352/263/204-/353/241/234/353/230/220.md +71 -0
  395. package/lessons/woowacourse-kotlin-lotto/Junyoung-WON/61-1/353/213/250/352/263/204-/353/241/234/353/230/220.md +143 -0
  396. package/lessons/woowacourse-kotlin-lotto/Junyoung-WON/93-2/353/213/250/352/263/204-/353/241/234/353/230/220.md +16 -0
  397. package/lessons/woowacourse-kotlin-lotto/Leeyerin0210/109-1/353/213/250/352/263/204-/353/241/234/353/230/220.md +57 -0
  398. package/lessons/woowacourse-kotlin-lotto/Leeyerin0210/135-2/353/213/250/352/263/204-/353/241/234/353/230/220.md +115 -0
  399. package/lessons/woowacourse-kotlin-lotto/PROGRESS.md +160 -0
  400. package/lessons/woowacourse-kotlin-lotto/README.md +77 -0
  401. package/lessons/woowacourse-kotlin-lotto/RightHennessy/32-2/353/213/250/352/263/204-/353/241/234/353/230/220.md +178 -0
  402. package/lessons/woowacourse-kotlin-lotto/RightHennessy/5-1/353/213/250/352/263/204-/353/241/234/353/230/220.md +149 -0
  403. package/lessons/woowacourse-kotlin-lotto/SUMMARY.md +369 -0
  404. package/lessons/woowacourse-kotlin-lotto/SeongHoonC/25-1/353/213/250/352/263/204-/353/241/234/353/230/220.md +129 -0
  405. package/lessons/woowacourse-kotlin-lotto/SeongHoonC/37-2/353/213/250/352/263/204-/353/241/234/353/230/220.md +27 -0
  406. package/lessons/woowacourse-kotlin-lotto/Yunseok-Nam/72-1/353/213/250/352/263/204-/353/241/234/353/230/220.md +137 -0
  407. package/lessons/woowacourse-kotlin-lotto/Yunseok-Nam/86-2/353/213/250/352/263/204-/353/241/234/353/230/220.md +17 -0
  408. package/lessons/woowacourse-kotlin-lotto/aprilgom/102-2/353/213/250/352/263/204-/353/241/234/353/230/220.md +62 -0
  409. package/lessons/woowacourse-kotlin-lotto/aprilgom/64-1/353/213/250/352/263/204-/353/241/234/353/230/220.md +146 -0
  410. package/lessons/woowacourse-kotlin-lotto/boogi-woogi/11-1/353/213/250/352/263/204-/353/241/234/353/230/220.md +26 -0
  411. package/lessons/woowacourse-kotlin-lotto/boogi-woogi/29-2/353/213/250/352/263/204-/353/241/234/353/230/220.md +26 -0
  412. package/lessons/woowacourse-kotlin-lotto/briandr97/26-1/353/213/250/352/263/204-/353/241/234/353/230/220.md +52 -0
  413. package/lessons/woowacourse-kotlin-lotto/briandr97/51-2/353/213/250/352/263/204-/353/241/234/353/230/220.md +123 -0
  414. package/lessons/woowacourse-kotlin-lotto/chaehyuns/71-1/353/213/250/352/263/204-/353/241/234/353/230/220.md +115 -0
  415. package/lessons/woowacourse-kotlin-lotto/chaehyuns/97-2/353/213/250/352/263/204-/353/241/234/353/230/220.md +107 -0
  416. package/lessons/woowacourse-kotlin-lotto/chanho0908/124-1/353/213/250/352/263/204-/353/241/234/353/230/220.md +51 -0
  417. package/lessons/woowacourse-kotlin-lotto/chanho0908/129-2/353/213/250/352/263/204-/353/241/234/353/230/220.md +149 -0
  418. package/lessons/woowacourse-kotlin-lotto/chws0508/24-1/353/213/250/352/263/204-/353/241/234/353/230/220.md +117 -0
  419. package/lessons/woowacourse-kotlin-lotto/chws0508/50-2/353/213/250/352/263/204-/353/241/234/353/230/220.md +167 -0
  420. package/lessons/woowacourse-kotlin-lotto/cucumber99/116-1/353/213/250/352/263/204-/353/241/234/353/230/220.md +155 -0
  421. package/lessons/woowacourse-kotlin-lotto/cucumber99/147-2/353/213/250/352/263/204-/353/241/234/353/230/220.md +223 -0
  422. package/lessons/woowacourse-kotlin-lotto/devfeijoa/125-1/353/213/250/352/263/204-/353/241/234/353/230/220.md +68 -0
  423. package/lessons/woowacourse-kotlin-lotto/devfeijoa/153-2/353/213/250/352/263/204-/353/241/234/353/230/220.md +107 -0
  424. package/lessons/woowacourse-kotlin-lotto/doabletuple/119-1/353/213/250/352/263/204-/353/241/234/353/230/220.md +157 -0
  425. package/lessons/woowacourse-kotlin-lotto/doabletuple/138-2/353/213/250/352/263/204-/353/241/234/353/230/220.md +77 -0
  426. package/lessons/woowacourse-kotlin-lotto/donghyun81/111-1/353/213/250/352/263/204-/353/241/234/353/230/220.md +67 -0
  427. package/lessons/woowacourse-kotlin-lotto/donghyun81/152-2/353/213/250/352/263/204-/353/241/234/353/230/220.md +124 -0
  428. package/lessons/woowacourse-kotlin-lotto/dpcks0509/80-1/353/213/250/352/263/204-/353/241/234/353/230/220.md +141 -0
  429. package/lessons/woowacourse-kotlin-lotto/dpcks0509/87-2/353/213/250/352/263/204-/353/241/234/353/230/220.md +134 -0
  430. package/lessons/woowacourse-kotlin-lotto/etama123/112-1/353/213/250/352/263/204-/353/241/234/353/230/220.md +170 -0
  431. package/lessons/woowacourse-kotlin-lotto/etama123/148-2/353/213/250/352/263/204-/353/241/234/353/230/220.md +183 -0
  432. package/lessons/woowacourse-kotlin-lotto/gaeun5744/101-2/353/213/250/352/263/204-/353/241/234/353/230/220.md +21 -0
  433. package/lessons/woowacourse-kotlin-lotto/gaeun5744/78-1/353/213/250/352/263/204-/353/241/234/353/230/220.md +158 -0
  434. package/lessons/woowacourse-kotlin-lotto/gahyunkim/107-1/353/213/250/352/263/204-/353/241/234/353/230/220.md +83 -0
  435. package/lessons/woowacourse-kotlin-lotto/gahyunkim/136-2/353/213/250/352/263/204-/353/241/234/353/230/220.md +51 -0
  436. package/lessons/woowacourse-kotlin-lotto/giovannijunseokim/106-1/353/213/250/352/263/204-/353/241/234/353/230/220.md +171 -0
  437. package/lessons/woowacourse-kotlin-lotto/giovannijunseokim/137-2/353/213/250/352/263/204-/353/241/234/353/230/220.md +111 -0
  438. package/lessons/woowacourse-kotlin-lotto/haeum808/67-1/353/213/250/352/263/204-/353/241/234/353/230/220.md +52 -0
  439. package/lessons/woowacourse-kotlin-lotto/haeum808/95-2/353/213/250/352/263/204-/353/241/234/353/230/220.md +97 -0
  440. package/lessons/woowacourse-kotlin-lotto/hwannow/113-1/353/213/250/352/263/204-/353/241/234/353/230/220.md +235 -0
  441. package/lessons/woowacourse-kotlin-lotto/hwannow/132-2/353/213/250/352/263/204-/353/241/234/353/230/220.md +149 -0
  442. package/lessons/woowacourse-kotlin-lotto/hxeyexn/77-1/353/213/250/352/263/204-/353/241/234/353/230/220.md +141 -0
  443. package/lessons/woowacourse-kotlin-lotto/hxeyexn/98-2/353/213/250/352/263/204-/353/241/234/353/230/220.md +162 -0
  444. package/lessons/woowacourse-kotlin-lotto/hyemdooly/17-1/353/213/250/352/263/204-/353/241/234/353/230/220.md +19 -0
  445. package/lessons/woowacourse-kotlin-lotto/hyemdooly/28-2/353/213/250/352/263/204-/353/241/234/353/230/220.md +23 -0
  446. package/lessons/woowacourse-kotlin-lotto/hyunji1203/15-1/353/213/250/352/263/204-/353/241/234/353/230/220.md +171 -0
  447. package/lessons/woowacourse-kotlin-lotto/hyunji1203/48-2/353/213/250/352/263/204-/353/241/234/353/230/220.md +150 -0
  448. package/lessons/woowacourse-kotlin-lotto/ii2001/62-1/353/213/250/352/263/204-/353/241/234/353/230/220.md +104 -0
  449. package/lessons/woowacourse-kotlin-lotto/ii2001/88-2/353/213/250/352/263/204-/353/241/234/353/230/220.md +20 -0
  450. package/lessons/woowacourse-kotlin-lotto/ijh1298/122-1/353/213/250/352/263/204-/353/241/234/353/230/220.md +179 -0
  451. package/lessons/woowacourse-kotlin-lotto/ijh1298/133-2/353/213/250/352/263/204-/353/241/234/353/230/220.md +153 -0
  452. package/lessons/woowacourse-kotlin-lotto/inseonyun/3-1/353/213/250/352/263/204-/353/241/234/353/230/220.md +222 -0
  453. package/lessons/woowacourse-kotlin-lotto/inseonyun/49-2/353/213/250/352/263/204-/353/241/234/353/230/220.md +166 -0
  454. package/lessons/woowacourse-kotlin-lotto/ippnsj/16-1/353/213/250/352/263/204-/353/241/234/353/230/220.md +154 -0
  455. package/lessons/woowacourse-kotlin-lotto/ippnsj/55-2/353/213/250/352/263/204-/353/241/234/353/230/220.md +145 -0
  456. package/lessons/woowacourse-kotlin-lotto/jaeyeongjo/59-1/353/213/250/352/263/204-/353/241/234/353/230/220.md +68 -0
  457. package/lessons/woowacourse-kotlin-lotto/jaeyeongjo/83-2/353/213/250/352/263/204-/353/241/234/353/230/220.md +53 -0
  458. package/lessons/woowacourse-kotlin-lotto/jerry8282/115-1/353/213/250/352/263/204-/353/241/234/353/230/220.md +97 -0
  459. package/lessons/woowacourse-kotlin-lotto/jerry8282/134-2/353/213/250/352/263/204-/353/241/234/353/230/220.md +145 -0
  460. package/lessons/woowacourse-kotlin-lotto/jinuemong/63-1/353/213/250/352/263/204-/353/241/234/353/230/220.md +144 -0
  461. package/lessons/woowacourse-kotlin-lotto/jinuemong/89-2/353/213/250/352/263/204-/353/241/234/353/230/220.md +148 -0
  462. package/lessons/woowacourse-kotlin-lotto/jiyuneel/128-1/353/213/250/352/263/204-/353/241/234/353/230/220.md +52 -0
  463. package/lessons/woowacourse-kotlin-lotto/jiyuneel/144-2/353/213/250/352/263/204-/353/241/234/353/230/220.md +149 -0
  464. package/lessons/woowacourse-kotlin-lotto/junjange/58-1/353/213/250/352/263/204-/353/241/234/353/230/220.md +148 -0
  465. package/lessons/woowacourse-kotlin-lotto/junjange/81-2/353/213/250/352/263/204-/353/241/234/353/230/220.md +178 -0
  466. package/lessons/woowacourse-kotlin-lotto/junseo511/120-1/353/213/250/352/263/204-/353/241/234/353/230/220.md +153 -0
  467. package/lessons/woowacourse-kotlin-lotto/junseo511/131-2/353/213/250/352/263/204-/353/241/234/353/230/220.md +188 -0
  468. package/lessons/woowacourse-kotlin-lotto/ki960213/43-2/353/213/250/352/263/204-/353/241/234/353/230/220.md +24 -0
  469. package/lessons/woowacourse-kotlin-lotto/ki960213/8-1/353/213/250/352/263/204-/353/241/234/353/230/220.md +159 -0
  470. package/lessons/woowacourse-kotlin-lotto/kimhm0728/74-1/353/213/250/352/263/204-/353/241/234/353/230/220.md +50 -0
  471. package/lessons/woowacourse-kotlin-lotto/kimhm0728/94-2/353/213/250/352/263/204-/353/241/234/353/230/220.md +176 -0
  472. package/lessons/woowacourse-kotlin-lotto/kkosang/85-2/353/213/250/352/263/204-/353/241/234/353/230/220.md +145 -0
  473. package/lessons/woowacourse-kotlin-lotto/kmkim2689/70-1/353/213/250/352/263/204-/353/241/234/353/230/220.md +97 -0
  474. package/lessons/woowacourse-kotlin-lotto/kmkim2689/82-2/353/213/250/352/263/204-/353/241/234/353/230/220.md +157 -0
  475. package/lessons/woowacourse-kotlin-lotto/krrong/19-1/353/213/250/352/263/204-/353/241/234/353/230/220.md +161 -0
  476. package/lessons/woowacourse-kotlin-lotto/krrong/41-2/353/213/250/352/263/204-/353/241/234/353/230/220.md +73 -0
  477. package/lessons/woowacourse-kotlin-lotto/m6z1/105-1/353/213/250/352/263/204-/353/241/234/353/230/220.md +67 -0
  478. package/lessons/woowacourse-kotlin-lotto/m6z1/151-2/353/213/250/352/263/204-/353/241/234/353/230/220.md +104 -0
  479. package/lessons/woowacourse-kotlin-lotto/medAndro/127-1/353/213/250/352/263/204-/353/241/234/353/230/220.md +186 -0
  480. package/lessons/woowacourse-kotlin-lotto/medAndro/130-2/353/213/250/352/263/204-/353/241/234/353/230/220.md +132 -0
  481. package/lessons/woowacourse-kotlin-lotto/moondev03/110-1/353/213/250/352/263/204-/353/241/234/353/230/220.md +66 -0
  482. package/lessons/woowacourse-kotlin-lotto/moondev03/141-2/353/213/250/352/263/204-/353/241/234/353/230/220.md +155 -0
  483. package/lessons/woowacourse-kotlin-lotto/murjune/69-1/353/213/250/352/263/204-/353/241/234/353/230/220.md +143 -0
  484. package/lessons/woowacourse-kotlin-lotto/murjune/90-2/353/213/250/352/263/204-/353/241/234/353/230/220.md +177 -0
  485. package/lessons/woowacourse-kotlin-lotto/no1msh/20-1/353/213/250/352/263/204-/353/241/234/353/230/220.md +69 -0
  486. package/lessons/woowacourse-kotlin-lotto/no1msh/46-2/353/213/250/352/263/204-/353/241/234/353/230/220.md +143 -0
  487. package/lessons/woowacourse-kotlin-lotto/otter66/13-1/353/213/250/352/263/204-/353/241/234/353/230/220.md +178 -0
  488. package/lessons/woowacourse-kotlin-lotto/otter66/53-2/353/213/250/352/263/204-/353/241/234/353/230/220.md +160 -0
  489. package/lessons/woowacourse-kotlin-lotto/oungsi2000/126-1/353/213/250/352/263/204-/353/241/234/353/230/220.md +71 -0
  490. package/lessons/woowacourse-kotlin-lotto/oungsi2000/149-2/353/213/250/352/263/204-/353/241/234/353/230/220.md +56 -0
  491. package/lessons/woowacourse-kotlin-lotto/parkjiminnnn/117-1/353/213/250/352/263/204-/353/241/234/353/230/220.md +129 -0
  492. package/lessons/woowacourse-kotlin-lotto/parkjiminnnn/146-2/353/213/250/352/263/204-/353/241/234/353/230/220.md +173 -0
  493. package/lessons/woowacourse-kotlin-lotto/pingu244/33-2/353/213/250/352/263/204-/353/241/234/353/230/220.md +21 -0
  494. package/lessons/woowacourse-kotlin-lotto/pingu244/54-2/353/213/250/352/263/204-/353/241/234/353/230/220.md +30 -0
  495. package/lessons/woowacourse-kotlin-lotto/pingu244/7-1/353/213/250/352/263/204-/353/241/234/353/230/220.md +19 -0
  496. package/lessons/woowacourse-kotlin-lotto/re4rk/31-2/353/213/250/352/263/204-/353/241/234/353/230/220.md +143 -0
  497. package/lessons/woowacourse-kotlin-lotto/re4rk/4-1/353/213/250/352/263/204-/353/241/234/353/230/220.md +66 -0
  498. package/lessons/woowacourse-kotlin-lotto/rhkrwngud445/23-1/353/213/250/352/263/204-/353/241/234/353/230/220.md +26 -0
  499. package/lessons/woowacourse-kotlin-lotto/rhkrwngud445/38-2/353/213/250/352/263/204-/353/241/234/353/230/220.md +129 -0
  500. package/lessons/woowacourse-kotlin-lotto/rhthrhrl0/21-1/353/213/250/352/263/204-/353/241/234/353/230/220.md +146 -0
  501. package/lessons/woowacourse-kotlin-lotto/rhthrhrl0/36-2/353/213/250/352/263/204-/353/241/234/353/230/220.md +150 -0
  502. package/lessons/woowacourse-kotlin-lotto/rosemin928/123-1/353/213/250/352/263/204-/353/241/234/353/230/220.md +179 -0
  503. package/lessons/woowacourse-kotlin-lotto/rosemin928/140-2/353/213/250/352/263/204-/353/241/234/353/230/220.md +126 -0
  504. package/lessons/woowacourse-kotlin-lotto/s6m1n/103-2/353/213/250/352/263/204-/353/241/234/353/230/220.md +119 -0
  505. package/lessons/woowacourse-kotlin-lotto/s6m1n/66-1/353/213/250/352/263/204-/353/241/234/353/230/220.md +118 -0
  506. package/lessons/woowacourse-kotlin-lotto/s9hn/18-1/353/213/250/352/263/204-/353/241/234/353/230/220.md +112 -0
  507. package/lessons/woowacourse-kotlin-lotto/sh1mj1/75-1/353/213/250/352/263/204-/353/241/234/353/230/220.md +104 -0
  508. package/lessons/woowacourse-kotlin-lotto/sh1mj1/91-2/353/213/250/352/263/204-/353/241/234/353/230/220.md +140 -0
  509. package/lessons/woowacourse-kotlin-lotto/songpink/65-1/353/213/250/352/263/204-/353/241/234/353/230/220.md +96 -0
  510. package/lessons/woowacourse-kotlin-lotto/songpink/99-2/353/213/250/352/263/204-/353/241/234/353/230/220.md +64 -0
  511. package/lessons/woowacourse-kotlin-lotto/sujin9/10-1/353/213/250/352/263/204-/353/241/234/353/230/220.md +20 -0
  512. package/lessons/woowacourse-kotlin-lotto/sujin9/35-2/353/213/250/352/263/204-/353/241/234/353/230/220.md +124 -0
  513. package/lessons/woowacourse-kotlin-lotto/tmdgh1592/22-1/353/213/250/352/263/204-/353/241/234/353/230/220.md +30 -0
  514. package/lessons/woowacourse-kotlin-lotto/tmdgh1592/30-2/353/213/250/352/263/204-/353/241/234/353/230/220.md +20 -0
  515. package/lessons/woowacourse-kotlin-lotto/tobae-time/114-1/353/213/250/352/263/204-/353/241/234/353/230/220.md +158 -0
  516. package/lessons/woowacourse-kotlin-lotto/tobae-time/145-2/353/213/250/352/263/204-/353/241/234/353/230/220.md +120 -0
  517. package/lessons/woowacourse-kotlin-lotto/whk06061/42-2/353/213/250/352/263/204-/353/241/234/353/230/220.md +21 -0
  518. package/lessons/woowacourse-kotlin-lotto/whk06061/9-1/353/213/250/352/263/204-/353/241/234/353/230/220.md +89 -0
  519. package/lessons/woowacourse-kotlin-lotto/wondroid-world/118-1/353/213/250/352/263/204-/353/241/234/353/230/220.md +100 -0
  520. package/lessons/woowacourse-kotlin-lotto/wondroid-world/150-2/353/213/250/352/263/204-/353/241/234/353/230/220.md +142 -0
  521. package/lessons/woowacourse-kotlin-lotto/yrsel/108-1/353/213/250/352/263/204-/353/241/234/353/230/220.md +124 -0
  522. package/lessons/woowacourse-kotlin-lotto/yrsel/143-2/353/213/250/352/263/204-/353/241/234/353/230/220.md +108 -0
  523. package/lessons/woowacourse-racingcar/2chang5/33-1/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +56 -0
  524. package/lessons/woowacourse-racingcar/2chang5/75-2/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +53 -0
  525. package/lessons/woowacourse-racingcar/CFalws/85-2/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +56 -0
  526. package/lessons/woowacourse-racingcar/Choisehyeon/46-1/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +61 -0
  527. package/lessons/woowacourse-racingcar/DYGames/49-1/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +62 -0
  528. package/lessons/woowacourse-racingcar/EmilyCh0/40-1/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +64 -0
  529. package/lessons/woowacourse-racingcar/EmilyCh0/57-2/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +55 -0
  530. package/lessons/woowacourse-racingcar/HamBeomJoon/137-1/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +55 -0
  531. package/lessons/woowacourse-racingcar/HamBeomJoon/170-2/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +50 -0
  532. package/lessons/woowacourse-racingcar/Hevton/106-1/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +54 -0
  533. package/lessons/woowacourse-racingcar/Hevton/118-/353/246/254/355/214/251/355/204/260/353/247/201.md +51 -0
  534. package/lessons/woowacourse-racingcar/Hogu59/108-1/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +56 -0
  535. package/lessons/woowacourse-racingcar/Hogu59/125-2/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +59 -0
  536. package/lessons/woowacourse-racingcar/JoYehyun99/111-2/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +57 -0
  537. package/lessons/woowacourse-racingcar/JoYehyun99/88-1/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +45 -0
  538. package/lessons/woowacourse-racingcar/Junyoung-WON/127-2/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +49 -0
  539. package/lessons/woowacourse-racingcar/Junyoung-WON/90-1/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +49 -0
  540. package/lessons/woowacourse-racingcar/Leeyerin0210/133-1/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +50 -0
  541. package/lessons/woowacourse-racingcar/Leeyerin0210/159-2/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +53 -0
  542. package/lessons/woowacourse-racingcar/PROGRESS.md +94 -0
  543. package/lessons/woowacourse-racingcar/README.md +69 -0
  544. package/lessons/woowacourse-racingcar/RightHennessy/51-1/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +55 -0
  545. package/lessons/woowacourse-racingcar/RightHennessy/58-2/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +57 -0
  546. package/lessons/woowacourse-racingcar/RunaNam/81-2/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +44 -0
  547. package/lessons/woowacourse-racingcar/SUMMARY.md +339 -0
  548. package/lessons/woowacourse-racingcar/SeongHoonC/37-1/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +57 -0
  549. package/lessons/woowacourse-racingcar/SeongHoonC/66-2/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +48 -0
  550. package/lessons/woowacourse-racingcar/Songusika/84-2/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +60 -0
  551. package/lessons/woowacourse-racingcar/Yunseok-Nam/114-2/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +43 -0
  552. package/lessons/woowacourse-racingcar/Yunseok-Nam/96-1/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +54 -0
  553. package/lessons/woowacourse-racingcar/aprilgom/130-/353/246/254/355/214/251/355/204/260/353/247/201.md +52 -0
  554. package/lessons/woowacourse-racingcar/aprilgom/97-1/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +49 -0
  555. package/lessons/woowacourse-racingcar/awesomeo184/23-2/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +48 -0
  556. package/lessons/woowacourse-racingcar/boogi-woogi/35-1/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +62 -0
  557. package/lessons/woowacourse-racingcar/boogi-woogi/59-2/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +55 -0
  558. package/lessons/woowacourse-racingcar/briandr97/54-1/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +57 -0
  559. package/lessons/woowacourse-racingcar/chaehyuns/131-/353/246/254/355/214/251/355/204/260/353/247/201.md +49 -0
  560. package/lessons/woowacourse-racingcar/chaehyuns/99-1/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +52 -0
  561. package/lessons/woowacourse-racingcar/chanho0908/147-1/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +54 -0
  562. package/lessons/woowacourse-racingcar/chanho0908/160-2/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +50 -0
  563. package/lessons/woowacourse-racingcar/chws0508/45-1/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +61 -0
  564. package/lessons/woowacourse-racingcar/chws0508/73-2/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +46 -0
  565. package/lessons/woowacourse-racingcar/cucumber99/132-1/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +55 -0
  566. package/lessons/woowacourse-racingcar/cucumber99/177-2/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +53 -0
  567. package/lessons/woowacourse-racingcar/devfeijoa/146-1/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +57 -0
  568. package/lessons/woowacourse-racingcar/doabletuple/149-1/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +55 -0
  569. package/lessons/woowacourse-racingcar/doabletuple/175-2/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +53 -0
  570. package/lessons/woowacourse-racingcar/donghyun81/154-2/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +58 -0
  571. package/lessons/woowacourse-racingcar/dpcks0509/103-1/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +48 -0
  572. package/lessons/woowacourse-racingcar/dpcks0509/112-2/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +48 -0
  573. package/lessons/woowacourse-racingcar/drunkenhw/82-2/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +60 -0
  574. package/lessons/woowacourse-racingcar/etama123/145-2/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +59 -0
  575. package/lessons/woowacourse-racingcar/gaeun5744/124-/353/246/254/355/214/251/355/204/260/353/247/201.md +53 -0
  576. package/lessons/woowacourse-racingcar/gaeun5744/93-1/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +60 -0
  577. package/lessons/woowacourse-racingcar/gahyunkim/134-1/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +53 -0
  578. package/lessons/woowacourse-racingcar/gahyunkim/164-2/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +54 -0
  579. package/lessons/woowacourse-racingcar/giovannijunseokim/140-1/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +54 -0
  580. package/lessons/woowacourse-racingcar/haeum808/101-1/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +55 -0
  581. package/lessons/woowacourse-racingcar/haeum808/129-/353/246/254/355/214/251/355/204/260/353/247/201.md +46 -0
  582. package/lessons/woowacourse-racingcar/hwannow/141-1/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +56 -0
  583. package/lessons/woowacourse-racingcar/hwannow/157-2/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +45 -0
  584. package/lessons/woowacourse-racingcar/hxeyexn/109-1/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +61 -0
  585. package/lessons/woowacourse-racingcar/hxeyexn/128-2/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +59 -0
  586. package/lessons/woowacourse-racingcar/hyemdooly/50-1/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +48 -0
  587. package/lessons/woowacourse-racingcar/hyemdooly/68-1/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +53 -0
  588. package/lessons/woowacourse-racingcar/hyunji1203/29-1/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +54 -0
  589. package/lessons/woowacourse-racingcar/hyunji1203/60-2/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +50 -0
  590. package/lessons/woowacourse-racingcar/ii2001/102-1/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +42 -0
  591. package/lessons/woowacourse-racingcar/ii2001/122-2/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +49 -0
  592. package/lessons/woowacourse-racingcar/ijh1298/144-2/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +57 -0
  593. package/lessons/woowacourse-racingcar/injoon2019/24-2/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +58 -0
  594. package/lessons/woowacourse-racingcar/inseonyun/44-1/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +60 -0
  595. package/lessons/woowacourse-racingcar/inseonyun/76-2/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +53 -0
  596. package/lessons/woowacourse-racingcar/ippnsj/36-1/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +54 -0
  597. package/lessons/woowacourse-racingcar/ippnsj/67-2/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +57 -0
  598. package/lessons/woowacourse-racingcar/jaeyeongjo/110-2/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +39 -0
  599. package/lessons/woowacourse-racingcar/jaeyeongjo/89-1/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +46 -0
  600. package/lessons/woowacourse-racingcar/jinuemong/104-1/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +49 -0
  601. package/lessons/woowacourse-racingcar/jinuemong/117-2/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +42 -0
  602. package/lessons/woowacourse-racingcar/jiyuneel/142-2/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +59 -0
  603. package/lessons/woowacourse-racingcar/junjange/113-2/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +41 -0
  604. package/lessons/woowacourse-racingcar/junjange/87-1/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +39 -0
  605. package/lessons/woowacourse-racingcar/junseo511/148-1/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +52 -0
  606. package/lessons/woowacourse-racingcar/junseo511/165-2/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +51 -0
  607. package/lessons/woowacourse-racingcar/ki960213/32-1/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +55 -0
  608. package/lessons/woowacourse-racingcar/ki960213/63-2/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +51 -0
  609. package/lessons/woowacourse-racingcar/kimhm0728/100-1/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +52 -0
  610. package/lessons/woowacourse-racingcar/kimhm0728/116-/353/246/254/355/214/251/355/204/260/353/247/201.md +54 -0
  611. package/lessons/woowacourse-racingcar/kkosang/105-1/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +54 -0
  612. package/lessons/woowacourse-racingcar/kkosang/126-/353/246/254/355/214/251/355/204/260/353/247/201.md +53 -0
  613. package/lessons/woowacourse-racingcar/kmkim2689/123-2/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +50 -0
  614. package/lessons/woowacourse-racingcar/kmkim2689/92-1/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +55 -0
  615. package/lessons/woowacourse-racingcar/krrong/34-1/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +63 -0
  616. package/lessons/woowacourse-racingcar/m6z1/150-1/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +53 -0
  617. package/lessons/woowacourse-racingcar/m6z1/156-2/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +40 -0
  618. package/lessons/woowacourse-racingcar/medAndro/153-1/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +54 -0
  619. package/lessons/woowacourse-racingcar/moondev03/135-1/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +57 -0
  620. package/lessons/woowacourse-racingcar/moondev03/161-2/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +52 -0
  621. package/lessons/woowacourse-racingcar/murjune/121-2/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +50 -0
  622. package/lessons/woowacourse-racingcar/murjune/95-1/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +54 -0
  623. package/lessons/woowacourse-racingcar/no1msh/43-1/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +55 -0
  624. package/lessons/woowacourse-racingcar/no1msh/69-2/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +60 -0
  625. package/lessons/woowacourse-racingcar/otter66/48-1/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +53 -0
  626. package/lessons/woowacourse-racingcar/otter66/77-2/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +52 -0
  627. package/lessons/woowacourse-racingcar/oungsi2000/152-1/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +56 -0
  628. package/lessons/woowacourse-racingcar/oungsi2000/187-2/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +54 -0
  629. package/lessons/woowacourse-racingcar/parkjiminnnn/143-1/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +58 -0
  630. package/lessons/woowacourse-racingcar/parkjiminnnn/158-2/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +54 -0
  631. package/lessons/woowacourse-racingcar/pingu244/38-1/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +58 -0
  632. package/lessons/woowacourse-racingcar/pingu244/62-2/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +59 -0
  633. package/lessons/woowacourse-racingcar/re4rk/28-1/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +60 -0
  634. package/lessons/woowacourse-racingcar/re4rk/55-2/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +54 -0
  635. package/lessons/woowacourse-racingcar/rhkrwngud445/42-1/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +53 -0
  636. package/lessons/woowacourse-racingcar/rhkrwngud445/74-2/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +47 -0
  637. package/lessons/woowacourse-racingcar/rhthrhrl0/31-1/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +43 -0
  638. package/lessons/woowacourse-racingcar/rosemin928/138-1/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +53 -0
  639. package/lessons/woowacourse-racingcar/rosemin928/171-2/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +38 -0
  640. package/lessons/woowacourse-racingcar/s6m1n/120-2/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +54 -0
  641. package/lessons/woowacourse-racingcar/s6m1n/91-1/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +62 -0
  642. package/lessons/woowacourse-racingcar/s9hn/53-2/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +44 -0
  643. package/lessons/woowacourse-racingcar/s9hn/78-2/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +43 -0
  644. package/lessons/woowacourse-racingcar/sh1mj1/107-1/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +55 -0
  645. package/lessons/woowacourse-racingcar/sh1mj1/115-2/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +61 -0
  646. package/lessons/woowacourse-racingcar/songpink/119-2/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +51 -0
  647. package/lessons/woowacourse-racingcar/songpink/98-1/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +55 -0
  648. package/lessons/woowacourse-racingcar/sujin9/52-2/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +48 -0
  649. package/lessons/woowacourse-racingcar/sujin9/61-2/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +47 -0
  650. package/lessons/woowacourse-racingcar/tmdgh1592/47-1/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +49 -0
  651. package/lessons/woowacourse-racingcar/tmdgh1592/64-2/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +53 -0
  652. package/lessons/woowacourse-racingcar/tobae-time/151-1/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +51 -0
  653. package/lessons/woowacourse-racingcar/tobae-time/167-2/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +43 -0
  654. package/lessons/woowacourse-racingcar/whk06061/41-2/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +58 -0
  655. package/lessons/woowacourse-racingcar/wondroid-world/136-1/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +49 -0
  656. package/lessons/woowacourse-racingcar/wondroid-world/166-2/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +50 -0
  657. package/lessons/woowacourse-racingcar/yrsel/139-1/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +53 -0
  658. package/lessons/woowacourse-racingcar/yujamint/83-2/353/213/250/352/263/204-/354/236/220/353/217/231/354/260/250-/352/262/275/354/243/274.md +59 -0
  659. package/package.json +46 -0
  660. package/skills/oh-my-oop/SKILL.md +39 -0
@@ -0,0 +1,228 @@
1
+ # PR #16 — [블랙잭 1단계] 베르 미션
2
+
3
+ - **Reviewee:** [@SeongHoonC](https://github.com/SeongHoonC)
4
+ - **PR:** https://github.com/woowacourse/kotlin-blackjack/pull/16
5
+ - **단계:** 1단계
6
+ - **리뷰어:** [@BeokBeok](https://github.com/BeokBeok) (**신규 reviewer**)
7
+ - **라인 코멘트:** 21 스레드 — *요구사항 어휘 + LSP/SRP 원칙 명시 + 외부 글 + 학생 자가 abstract/open 학습*
8
+ - **신규 reviewee** (2023년 3월 코호트, PR #23·#26 와 같은 시기).
9
+
10
+ ## 잘한 점 (설계 관점)
11
+
12
+ - **abstract vs open 학생 자가 답변 (Kotlin 어휘 정리)** — 벅벅 메타 질문: *"abstract와 open의 차이점은 무엇일까요?"* + 학생 자가 답변: *"abstract class : 인스턴스화 할 수 없습니다. 또한 하위 클래스에서 구현이 없는 abstract method 를 필수로 override 해야 합니다. open class : 인스턴스화 할 수 있습니다. 하위 클래스에서 open fun 을 그대로 쓰거나 override 해서 사용할 수 있습니다."*. **MCP 룰 후보 `abstract-without-abstract-method`** + Kotlin 어휘 학생 자가 학습 모범. PR #74·#95·#108·#133·#137·#147 결.
13
+ - **LSP + MutableList vs List 자가 학습** — 벅벅: *"객체지향의 원칙 중 LSP 라는 것이 있습니다. LSP가 무엇인지 학습해보시고 코드를 개선해보면 어떨까요? 참고로 MutableList는 List의 하위타입입니다."* + 학생 자가 답변: *"상위타입인 List 를 캡슐화하면 하위타입 MutableList 또한 받을 수 있습니다. 현재 가변리스트를 외부에서 받는 구조입니다. 하지만 가변 리스트가 돌아다니면 값이 훼손될 수 있습니다. 때문에 불변 리스트 형태로 받고 가변리스트로 변환하도록 변경하겠습니다."*. **LSP (Liskov Substitution Principle) 자가 학습 + Kotlin List vs MutableList 타입 계층 인지**.
14
+ - **카드 섞기 자가 init 적용** — 벅벅: *"카드를 섞는 함수를 잘 구현해주셨네요. 다만, 개발자가 깜빡하고 이 함수를 호출하지 않게 되면 카드가 섞이지 않게 되는데요. 이 함수를 호출하지 않고 카드를 섞을 수 있도록 코드를 개선해보면 어떨까요?"* + 학생: *"인스턴스화 될 때 init 에서 호출하도록 하였습니다."*. **객체 invariant 자가 학습** = *"객체 생성 시 카드는 섞여 있다" 보장*. PR #146 (yrsel *변경 직후 invariant 보장*) 결.
15
+ - **private 생성자 칭찬** — 벅벅: *"private 생성자 👍"* — *Deck factory 패턴 권고 + 자가 적용*. PR #74·#108·#133·#136·#46·#26·#23 결.
16
+
17
+ ## 못한 점 (설계 관점)
18
+
19
+ ### 1. `Deck` 생성자 부재 — 행동만 가지면 다른 객체와 구별 어려움
20
+
21
+ 벅벅 진단: *"Deck은 반드시 카드 리스트를 가져야 합니다. 그렇다면 카드 리스트를 생성자로 갖도록 코드를 개선해보면 어떨까요? 생성자가 없는 클래스는 오직 프로퍼티와 함수만 갖기 때문에, 다른 객체들과 구별하기 어렵습니다."*
22
+
23
+ 벅벅 별도 (Cards): *"Cards 클래스는 반드시 Card의 리스트를 가지고 있어야 합니다. 그렇다면, 멤버 변수보다는 생성자로 캡슐화하면 어떨까요? 추가로, 클래스는 최소한 무언가는 캡슐화를 하는 것이 좋습니다. 지금과 같은 클래스 구조에서는 오로지 행동(함수)만을 가지므로, 다른 객체들과 구별하기가 어렵습니다."*
24
+
25
+ → **2 가지 학습**:
26
+
27
+ #### 1.1. *생성자 = 객체의 invariant 명시*
28
+
29
+ - *생성자 없음 + 멤버 변수 늦은 초기화* = *어느 시점에 초기화되는지 모호*.
30
+ - *생성자 (val cards: List<Card>)* = *생성 시점부터 invariant (카드 리스트 보유) 보장*.
31
+
32
+ #### 1.2. *행동만 가진 클래스 = `static helper` 와 구별 어려움*
33
+
34
+ - *행동만 = 사실상 함수 모음 (top-level 함수 or object)*.
35
+ - *클래스 = 상태 + 행동 응집*.
36
+ - **MCP 룰 후보 — `class-without-state`** = *상태 없는 클래스는 object / top-level 함수 정공*.
37
+
38
+ PR #46 (krrong 2단계 *Calculator object*) 결.
39
+
40
+ ### 2. `BlackJackRule` 파일명 — *클래스처럼 보이지만 상수 모음*
41
+
42
+ 벅벅 1차: *"파일명만 봤을 때에는 클래스처럼 느껴지지만, 파일 내부에는 규칙과 관련된 상수값들이 모여있네요. 파일명을 보고서 블랙잭과 관련된 상수값들이 있는지 알 수 있도록 파일명을 개선해보면 어떨까요?"*
43
+
44
+ 벅벅 2차 (후속): *"파일명을 잘 바꿔주셨습니다. 지금과 같은 파일명도 좋지만, `BlackJackConstants` 와 같이 간결하게 작성할 수 있어요. 추가로, top-level 변수로 정의를 해주셔서 외부에서 편하게 접근할 수 있다는 장점이 있지만, 나중에 상수가 많아지게 되면 어디에 정의되어있는지 알기 어렵다는 단점이 있습니다. 해서, object에 관련 상수값을 묶는 것을 권장합니다."*
45
+
46
+ → **3 가지 학습**:
47
+
48
+ #### 2.1. *파일명 = 내용 추론 매개체*
49
+
50
+ - *`BlackJackRule.kt`* = *클래스/인터페이스 추정* (~`Rule` 명명 패턴).
51
+ - *`BlackJackConstants.kt`* = *상수 모음 명시*.
52
+
53
+ #### 2.2. *top-level vs object 상수*
54
+
55
+ - *top-level* = *전역 접근 + 짧은 표기* + *분산 가능성*.
56
+ - *object* = *그룹핑 + 명시적 컨테이너* + *`BlackJackConstants.MAX_SCORE` 형태*.
57
+ - *상수 다중 = object 응집 정공*.
58
+
59
+ #### 2.3. *Rule 명사 = vague-name 결*
60
+
61
+ PR #99·#26·#23·#39 의 *vagueName* 결. *`Rule` (추상 명사) 자체가 모호 + 상수 모음 내용과 불일치*.
62
+
63
+ ### 3. `Dealer` 이름 프로퍼티 오버라이딩 + 요구사항 변경 시 — 메타 질문
64
+
65
+ 벅벅: *"프로퍼티를 오버라이딩하여 이름을 설정할 수 있도록 잘 구현해주셨네요. 👍 만약 요구사항이 변경되어 Dealer의 이름을 설정할 수 있도록 된다면, 어떻게 개선할 수 있을까요?"*
66
+
67
+ → **요구사항 변경 시나리오 = 설계 유연성 메타 질문**:
68
+ - *현재 = `Dealer.name = "딜러"` 고정*.
69
+ - *변경 시나리오 = `Dealer("이름")` 외부 주입 가능*.
70
+ - *상속 (override) vs 생성자 주입 트레이드오프*.
71
+
72
+ PR #95·#23·#46 의 *Dealer 책임 위치 + 인스턴스 가변성* 결.
73
+
74
+ ### 4. `Person` 3 변수 제약 + 요구사항 어휘
75
+
76
+ 벅벅: *"프로그래밍 요구사항은 아래와 같은 항목이 있습니다. - 3개 이상의 인스턴스 변수를 가진 클래스를 쓰지 않는다. 이 요구사항을 반영해보면 어떨까요?"*
77
+
78
+ → **3 변수 제약 (객체지향 생활 체조 원칙)**. PR #98 (chaehyuns *3 변수 제약 자가 의문*) / PR #133·#88·#132·#136·#93 의 *3 변수 제약 부산물 인공 객체* 결.
79
+
80
+ ### 5. `MainView` 입출력 분리 — 요구사항 어휘
81
+
82
+ 벅벅: *"MainView는 입력과 출력에 대한 책임을 가지고 있습니다. 프로그래밍 요구사항에 있는 것처럼, 입력과 관련된 책임과 출력과 관련된 책임을 서로 분리해보면 어떨까요?"*
83
+
84
+ → **InputView + OutputView 분리**. PR #98·#88·#131 의 *view-by-stage-split* / PR #28·#79 의 *Controller god-object* 결.
85
+
86
+ ### 6. `테스트 의도-구현 불일치` — 명세서 어휘
87
+
88
+ 벅벅 1차: *"테스트 코드에서는 '52장 생성되어야 한다'인데, 구현부는 단순히 Deck 객체를 생성할 때 예외가 발생하는지만을 체크하고 있네요. 52장이 아닌 카드 리스트를 가진 Deck을 생성했을 때 예외가 발생하는지 테스트 코드를 작성해보면 어떨까요?"*
89
+
90
+ 벅벅 2차: *"테스트 코드에서는 '한장씩 뽑을 수 있다'라고 되어있는데요. 구현부에서는 한 장이 아니라, 해당 인스턴스가 Card인지를 체크하고 있네요. 테스트를 하고자 하는 것과 일치시켜보면 어떨까요?"*
91
+
92
+ 벅벅 3차 (학생 자가 의문 후 부연 + URL 자가 참조): *"제가 설명이 조금 부족한 것 같네요. '덱에서 카드를 뽑을 수 있다' 라는 테스트를 작성해주셨는데요. 하지만 구현부에서는 단순히 뽑은 카드의 인스턴스가 Card인지 비교하고 있습니다. 이는 반드시 성공하는 테스트이지 않을까요? 내가 원하는 카드 리스트를 기반으로 Deck을 완성하고, getCard 함수를 호출했을 때 내가 원하는 카드가 일치하는지 확인해보면 어떨까요?"*
93
+
94
+ → **3 가지 학습**:
95
+
96
+ #### 6.1. *테스트 명 ≠ 검증 내용 = 명세서 불일치*
97
+
98
+ - *테스트 명*: *"52장 생성되어야 한다"* — *카드 수 검증 의도*.
99
+ - *검증 내용*: *예외 발생 여부* — *카드 수 검증 X*.
100
+
101
+ #### 6.2. *반드시 성공하는 테스트 = 무의미*
102
+
103
+ - *`assertThat(deck.getCard()).isInstanceOf(Card::class.java)`* — *`getCard()` 반환 타입이 `Card` 이므로 항상 통과*.
104
+ - *결정적 카드 검증* (e.g., 첫 카드는 ACE) — *실제 동작 검증*.
105
+
106
+ #### 6.3. *reviewer 자가 부연 + 학생 의도 명확화*
107
+
108
+ 벅벅의 *"제가 설명이 조금 부족한 것 같네요"* — **reviewer 자가 부연 + URL 자가 참조**. PR #95 (말리빈 *두 번 부연*) / PR #99 (KwonDae *궁극적 의도 명시*) / PR #23 (말리빈 *이모지 부연*) 결.
109
+
110
+ PR #23·#26·#39·#46·#74·#95·#99 의 *갯수만 검증 무의미 + 결정적 검증* 결.
111
+
112
+ ### 7. `원시값 포장 (Int → Score)` — 학생 자가 의문 + SRP 어휘
113
+
114
+ 벅벅 1차: *"ACE의 합을 계산하는 중요한 로직을 잘 구현해주셨네요. 👍 프로그래밍 요구사항에는 아래와 같은 항목이 있습니다. - 모든 원시 값과 문자열을 포장한다. 이 요구사항을 반영해서 점수(Int타입)를 포장해보면 어떨까요?"*
115
+
116
+ 학생 자가 의문: *"같은 클래스 내부에서 호출되는 private 함수인데 Int 타입 포장이 필요한가요...? 잘 모르겠습니다..!!"*
117
+
118
+ 벅벅 메타 답변 (SRP 어휘): *"점수에 해당하는 타입(Int)도 로직이 존재합니다. (최대 점수는 몇점까지 가능한지, 상황에 따라 ACE가 있을 때 점수 계산이 어떻게 되는지 등) 즉, Person 클래스는 플레이어의 책임 뿐만 아니라 점수와 관련된 책임도 가지고 있습니다. 객체지향 원칙 중 SRP에 대해서 학습해보시고, 코드를 개선해보면 어떨까요?"*
119
+
120
+ → **3 가지 메타 학습**:
121
+
122
+ #### 7.1. *학생 자가 의문 = 학습 갭 명시*
123
+
124
+ *"같은 클래스 내부에서 호출되는 private 함수인데 Int 타입 포장이 필요한가요...? 잘 모르겠습니다..!!"* — **학생 자가 학습 갭 명시 모범**. PR #95·#99·#43 결.
125
+
126
+ #### 7.2. *원시값 포장 = SRP 적용*
127
+
128
+ - *`Int 점수` 자체 = *로직 보유 (max, ACE 분기)***.
129
+ - *Person 클래스 가 *점수 로직* 까지 = *책임 다중* (SRP 위반).
130
+ - *`Score` 별도 객체 = *점수 책임 응집* + Person 은 *Score 협력*.
131
+
132
+ PR #131·#136·#146·#147·#70·#26·#43 의 *점수 책임 위치 트레이드오프* 결.
133
+
134
+ #### 7.3. *외부 객체와 내부 private 의 차이*
135
+
136
+ 학생의 *"같은 클래스 내부 private 함수"* — *외부 노출 X 라면 캡슐화는 충분히 보장됨* 자가 정당화. **그러나 SRP 는 *외부 노출 여부 ≠ 책임 다중***. *책임 응집 자체* 가 별도 기준.
137
+
138
+ **MCP 룰 후보 — `primitive-with-domain-logic`** = *원시값 + 도메인 로직 = 포장 정공*. PR #74·#137·#148·#131 결.
139
+
140
+ ### 8. `Decision` constants 패키지 부적합
141
+
142
+ 벅벅: *"상수(constants)는 일반적으로 로직을 가지고 있지 않습니다. 하지만 Decision은 of, has 함수 등 로직을 가지고 있습니다. 그렇다면 constants 패키지에 속하는 것은 부적합한 것 같은데요. constants가 아닌 다른 패키지에 위치시켜보면 어떨까요?"*
143
+
144
+ 학생: *"다른 패키지를 만들어 보려고 했는데 이름이 생각나지 않아서 일단 domain 패키지로만 이동하였습니다!"*
145
+
146
+ → **패키지 = 응집 단위**. *상수 패키지 + 로직 객체 = 응집 위반*. *domain 패키지 (도메인 객체) / model 패키지 (가치 객체) / enum 패키지* 등이 후보.
147
+
148
+ **`enum 에 행동 부여` = enum 어휘 활용 (PR #137·#148·#90·#146)** 와 *패키지 분류* 의 충돌 — *Decision 이 enum 인지 sealed class 인지에 따라 패키지 다름*.
149
+
150
+ ### 9. `when vs if (3 분기 이상)` + 외부 글
151
+
152
+ 벅벅: *"condition이 3가지 이상인 경우에는 if문 보다도 when 절을 사용하는 것을 권장합니다. ref. https://kotlinlang.org/docs/coding-conventions.html#if-versus-when"*
153
+
154
+ → **Kotlin 어휘 + 외부 글**. PR #26 (잭슨 *when vs if-else 외부 글*) 와 *같은 외부 글*. **2023년 3월 코호트 reviewer 공통 패턴**.
155
+
156
+ ### 10. `ACE 1↔11` 테스트 부재 — 도메인 핵심 로직
157
+
158
+ 벅벅 1차: *"ACE는 블랙잭 게임에서 중요한 역할을 합니다. 그렇다면, ACE는 어떤 경우에 11이 되고 어떤 경우에 1이 될까요? 이 경우에 대한 테스트 코드를 작성해보면 어떨까요?"*
159
+
160
+ 벅벅 2차: *"카드 패의 합이 21일 경우에 대해서도 테스트 코드를 작성해보면 어떨까요?"*
161
+
162
+ 벅벅 3차: *"ACE를 판단하여 점수를 계산하는 로직은 블랙잭 게임에서의 핵심 로직 중 하나입니다. 이 함수들을 테스트가 가능하도록 코드를 개선해보면 어떨까요?"*
163
+
164
+ → **도메인 핵심 로직 = 결정적 테스트 필수**. PR #137·#148·#90·#23·#26 의 *Ace 1↔11 양가성* / PR #46·#26 의 *블랙잭 룰 정확성* 결.
165
+
166
+ ### 11. `주석 → 함수명 개선`
167
+
168
+ 벅벅: *"함수가 어떤 일을 하는지 주석으로 부연설명을 잘 해주셨네요. 👍 이처럼 주석은 코드를 이해하는 데 큰 도움이 되지만, 대체로 주석은 아래와 같은 이유로 유지보수가 잘 되지 않습니다. 1. 다른사람이 작성한 주석은 건드리기가 껄끄럽다. 2. 주석을 수정하지 않아도 코드가 동작하는데 문제가 없다. 그래서 주석의 순기능이 점점 퇴색되게 됩니다. 주석에서 설명하고 하는 바를 최대한 함수명에 잘 드러낼 수 있도록 함수명을 개선해보면 어떨까요?"*
169
+
170
+ → **주석 vs 함수명**:
171
+ - *주석 = 코드 변경 시 함께 변경 X 위험*.
172
+ - *함수명 = 코드 변경 시 함께 변경 (컴파일러 강제)*.
173
+ - *복잡한 함수 → 함수명 + 변수명 자가 설명*. PR #46 (말리빈 *라면 비유*) 결.
174
+
175
+ ## 리뷰어 의견 요지 (벅벅 / BeokBeok) — *신규 reviewer*
176
+
177
+ 21 코멘트 특징:
178
+
179
+ - **요구사항 어휘** — *"프로그래밍 요구사항은 아래와 같은 항목이 있습니다"* (3 회) — **블랙잭 미션 요구사항 명시 인용**. PR #20·#64·#110 (페로로 요구사항 인용) 결.
180
+ - **객체지향 원칙 명시 (LSP / SRP)** — *"객체지향의 원칙 중 LSP 라는 것이 있습니다"* / *"객체지향 원칙 중 SRP에 대해서 학습해보시고"* — **원칙 명시 + 학생 자가 학습 권유**. PR #137·#148·#151·#146 의 *조영호 어휘* 결의 *원칙 어휘*.
181
+ - **외부 글 첨부** — Kotlin 공식 문서 (when vs if). PR #26·#23·#95·#74 결.
182
+ - **메타 질문 + 학생 자가 답변 유도** — *"abstract와 open의 차이점은 무엇일까요?"* / *"ACE는 어떤 경우에 11이 되고 어떤 경우에 1이 될까요?"* — **학생 자가 학습 가시화**.
183
+ - **자가 부연 어휘** — *"제가 설명이 조금 부족한 것 같네요"* + URL 자가 참조. PR #95·#23·#99 결.
184
+ - **`👍` 칭찬 + 권고 분포** — *프로퍼티 오버라이딩, 카드 섞기, ACE 계산, abstract, MutableList 캡슐화, private 생성자, 주석* 칭찬 7회 + 권고 14회. 균형 잡힌 분포.
185
+
186
+ ## 대표 인용
187
+
188
+ > *"abstract class : 인스턴스화 할 수 없습니다. 또한 하위 클래스에서 구현이 없는 abstract method 를 필수로 override 해야 합니다. open class : 인스턴스화 할 수 있습니다. 하위 클래스에서 open fun 을 그대로 쓰거나 override 해서 사용할 수 있습니다."* — SeongHoonC (Kotlin 어휘 학생 자가 정리)
189
+
190
+ > *"상위타입인 List 를 캡슐화하면 하위타입 MutableList 또한 받을 수 있습니다. 현재 가변리스트를 외부에서 받는 구조입니다. 하지만 가변 리스트가 돌아다니면 값이 훼손될 수 있습니다. 때문에 불변 리스트 형태로 받고 가변리스트로 변환하도록 변경하겠습니다."* — SeongHoonC (LSP 자가 학습 + Kotlin List vs MutableList 인지)
191
+
192
+ > *"같은 클래스 내부에서 호출되는 private 함수인데 Int 타입 포장이 필요한가요...? 잘 모르겠습니다..!!"* — SeongHoonC (학생 자가 학습 갭 명시)
193
+
194
+ > *"점수에 해당하는 타입(Int)도 로직이 존재합니다. (최대 점수는 몇점까지 가능한지, 상황에 따라 ACE가 있을 때 점수 계산이 어떻게 되는지 등) 즉, Person 클래스는 플레이어의 책임 뿐만 아니라 점수와 관련된 책임도 가지고 있습니다. 객체지향 원칙 중 SRP에 대해서 학습해보시고, 코드를 개선해보면 어떨까요?"* — BeokBeok (SRP 어휘 + 원시값 포장 책임 어휘)
195
+
196
+ > *"생성자가 없는 클래스는 오직 프로퍼티와 함수만 갖기 때문에, 다른 객체들과 구별하기 어렵습니다."* — BeokBeok (생성자 = 객체 invariant 어휘)
197
+
198
+ > *"제가 설명이 조금 부족한 것 같네요."* — BeokBeok (reviewer 자가 부연 어휘)
199
+
200
+ ## 얻은 교훈
201
+
202
+ 1. **`abstract` vs `open` Kotlin 어휘 학생 자가 정리** — *abstract = 인스턴스화 X + override 강제 / open = 인스턴스화 O + override 선택*. **MCP 룰 후보 `abstract-without-abstract-method`**. PR #74·#95·#108·#133·#137·#147 와 같은 결.
203
+
204
+ 2. **LSP + List vs MutableList 타입 계층** — *MutableList ⊆ List* (Kotlin 타입 계층). *List 캡슐화 시 MutableList 도 받음 → 외부에서 캐스팅 후 변경 가능* = *LSP 위반 가능성*. *불변 List 받고 내부 MutableList 변환* 정공. PR #74 (송핑크 *불변 객체 자가 학습*) / PR #46 (krrong *backing property*) 결.
205
+
206
+ 3. **`생성자 = 객체 invariant 명시`** = *행동만 가진 클래스 = static helper 와 구별 어려움*. **MCP 룰 후보 `class-without-state`**. PR #46 (Calculator object) 결.
207
+
208
+ 4. **`top-level 상수` vs `object 상수`** — *전역 접근 + 분산 위험* vs *그룹핑 + 명시적 컨테이너*. *상수 다중 = object 응집 정공*.
209
+
210
+ 5. **`테스트 명 ≠ 검증 내용 = 명세서 불일치`** — *반드시 성공하는 테스트 = 무의미*. *결정적 카드 검증 + 의도 일치*. PR #23·#26·#39·#46·#74·#95·#99 결.
211
+
212
+ 6. **`원시값 포장 = SRP 적용`** — *`Int 점수` + 도메인 로직 (max, ACE) = Person 의 다중 책임* → *`Score` 별도 객체 + Person 은 협력*. **MCP 룰 후보 `primitive-with-domain-logic`**. PR #131·#136·#146·#147·#70·#26·#43 결.
213
+
214
+ 7. **`주석 vs 함수명`** — *주석 = 코드 변경 시 함께 변경 X 위험* / *함수명 = 컴파일러 강제 + 자가 설명*. PR #46 (말리빈 *라면 비유*) 결.
215
+
216
+ 8. **`when vs if 3 분기 이상` Kotlin 어휘** — *Kotlin 공식 문서 인용*. PR #26 (잭슨 *동일 외부 글*) 결의 *2023년 3월 코호트 reviewer 공통 패턴*.
217
+
218
+ 9. **`패키지 = 응집 단위`** — *상수 패키지 + 로직 객체 = 응집 위반*. *Decision (로직 보유 enum) ≠ constants 패키지*. **MCP 룰 후보 `package-cohesion`**.
219
+
220
+ 10. **`init 블록 = 객체 생성 시 invariant 보장`** — *카드 섞기를 init 에서 강제* = *외부 호출 누락 위험 차단*. PR #146 결.
221
+
222
+ 11. **`요구사항 인용` reviewer 어휘** — *"프로그래밍 요구사항은 아래와 같은 항목이 있습니다"* — *블랙잭 미션 명시 요구사항을 reviewer 가 그대로 인용 + 학생 적용 권유*. PR #20·#64·#110 (페로로) 결.
223
+
224
+ 12. **`SRP / LSP / DIP` 원칙 명시 어휘** — *벅벅이 *원칙 약어 직접 명시 + 학생 자가 학습 권유*. **MCP `oh-my-oop` 룰 의 *guideline* 필드와 일치**.
225
+
226
+ 13. **신규 reviewer 등장 (BeokBeok)** — 2023년 3월 코호트 또 다른 reviewer. *말리빈/잭슨 + BeokBeok* = 3 reviewer 다양성 확보 (2023년 3월 시기).
227
+
228
+ 14. **외부 글 첨부 패턴 (Kotlin 공식 문서)** — *2023년 3월 코호트 reviewer 들 (말리빈/잭슨/벅벅) 공통 패턴*. PR #26·#23 결.
@@ -0,0 +1,227 @@
1
+ # PR #54 — [베르] 2단계 블랙잭
2
+
3
+ - **Reviewee:** [@SeongHoonC](https://github.com/SeongHoonC) (베르)
4
+ - **PR:** https://github.com/woowacourse/kotlin-blackjack/pull/54
5
+ - **단계:** 2단계
6
+ - **리뷰어:** [@BeokBeok](https://github.com/BeokBeok) (벅벅)
7
+ - **라인 코멘트:** 13 스레드 — *학생 자가 답변 3 thread + PR 본문 상태 패턴 처음 적용 + 점진적 변경 어려움 메타 / 프로퍼티 = 상태 / 함수 = 행동 + 불필요 간접 호출 = 분석 부담 (PR #72 반대 어휘) + 요구사항 vs 완성도 추가 제약 + 람다 다중 전달 흐름 파악 부담 + val vs var 오버라이딩 어휘*
8
+ - **SeongHoonC 양 단계 완성** (1단계 #16 batch 14).
9
+
10
+ ## 잘한 점 (설계 관점)
11
+
12
+ ### 1. PR 본문 — 상태 패턴 처음 적용 + 점진적 변경 학생 자가 어려움
13
+
14
+ PR 본문:
15
+
16
+ > *"먼저 상태패턴 적용 허락해주신 리뷰어님 감사드립니다!*
17
+ >
18
+ > *처음 적용해 보는 것이라 어려웠지만 열심히 했습니다!*
19
+ >
20
+ > ***기존에 있던 파일을 유지한채로 점진적으로 변경하느라 특히 더 힘들었던 것 같습니다..***
21
+ >
22
+ > *코드가 많이 바껴서 힘드시겠지만.. 리뷰 잘부탁드립니다!"*
23
+
24
+ → **MCP 룰 `pr-body-incremental-refactor-difficulty`** ⭐⭐ 신규 — *기존 코드 유지 + 점진적 리팩터링 어려움 학생 자가 어휘*. PR #154 (`pr-body-restart-from-scratch` 갈아엎기) 결의 *리팩터링 방향* 다른 축 — *점진적 vs 갈아엎기 어려움 어휘*.
25
+
26
+ ### 2. 상태 패턴 적용 칭찬 (Thread 1·전체)
27
+
28
+ reviewer: *"대체로 상태 패턴을 잘 적용해주셨네요. 👍"*
29
+
30
+ ### 3. 람다 도메인↔View 의존성 끊기 칭찬 (Thread 10)
31
+
32
+ reviewer:
33
+
34
+ > *"전반적으로 람다를 활용하여 domain과 view의 의존성을 잘 끊어내주었습니다. 👍"*
35
+
36
+ → PR #62·#42 (콜백·HOF 어휘) 결 합류 누적 다수.
37
+
38
+ ## 못한 점 (설계 관점)
39
+
40
+ ### 1. 프로퍼티 = 상태 / 함수 = 행동 (Thread 1) — 정점
41
+
42
+ ```kotlin
43
+ val hasAce: Boolean
44
+ get() = cards.any { it.isAce() }
45
+ ```
46
+
47
+ reviewer:
48
+
49
+ > *"hasAce라는 변수를 잘 정의해주셨네요. 👍 **다만, 프로퍼티는 행동이 아닌 상태를 가져야만 합니다. 행동인 경우에는 함수로 구현해보면 어떨까요?**"*
50
+
51
+ → **MCP 룰 `property-vs-function-state-vs-behavior`** ⭐⭐⭐ **신규 정점** — *속성 = 상태 / 함수 = 행동 어휘*. PR #62 (haeum808 PR 본문 *계산 프로퍼티 vs 메서드 자가 질문*) 결 합류 누적 2 PR → ***프로퍼티 vs 메서드 어휘 정점*** ⭐⭐⭐.
52
+
53
+ ### 2. 불필요 간접 호출 = 분석 부담 (Thread 5) — PR #72 반대 어휘
54
+
55
+ ```kotlin
56
+ // Person.kt
57
+ fun getHandCards(): List<Card> = state.hand.cards
58
+ fun getPlayerProfit(...): Profit = state.profit(...)
59
+ ```
60
+
61
+ reviewer:
62
+
63
+ > *"이 함수들이 반드시 필요한 함수들인지 고민해보면 좋을 것 같아요. **불필요한 \"간접 호출\"은, 코드 분석 시 함수 호출부를 계속해서 타고 들어가야 하므로, 오히려 코드를 이해하기 복잡하게 만들어요.** (getHandCards, getPlayerProfit 포함)"*
64
+
65
+ 학생 자가 답변:
66
+
67
+ > *"상태값을 변화시키는 것과 상태값에서 값을 가져오는 것에 차이를 두는 것이 좋은 것 같습니다.*
68
+ >
69
+ > *. 으로 타고 들어가는 것을 줄이고자 get을 호출하지 않고 **불필요한 코드를 많이 늘리는 것은 코드를 복잡하게 만드는 것이므로 동의합니다.**"*
70
+
71
+ → **MCP 룰 `unnecessary-indirect-call`** ⭐⭐⭐ **신규** — *불필요한 위임 = 분석 부담*.
72
+
73
+ → **MCP `oh-my-oop` 핵심 가치 트레이드오프 어휘 정점**: PR #72 (`forward-compatible-delegation` *로직 없는 위임 = 향후 유지보수 가치*) 결과 **반대 어휘** — ***위임 가치 vs 부담 트레이드오프*** ⭐⭐⭐ 신규. *상황에 따라 위임이 가치 / 분석 부담* — **단일 답 X**.
74
+
75
+ → **학생 자가 *상태 변화 vs 값 조회 차이* 자가 자각** ⭐⭐ — *Tell-Don't-Ask 어휘 학생 측 자각*.
76
+
77
+ ### 3. 요구사항 vs 완성도 추가 제약 (Thread 3)
78
+
79
+ ```kotlin
80
+ // Participants.kt - 이름 중복 검증 추가
81
+ require(names.toSet().size == names.size)
82
+ ```
83
+
84
+ reviewer:
85
+
86
+ > *"플레이어의 이름이 중복이 되지 않아야한다는 요구사항이 있을까요? 만약, 플레이어 중 동명이인이 있다면 게임을 할 수 없게 되는걸까요?*
87
+ >
88
+ > ***프로그램의 완성도를 높히는 것도 중요하지만, 가급적이면 요구사항을 준수하도록 프로그램을 작성해보면 어떨까요?***"*
89
+
90
+ 학생 자가 답변:
91
+
92
+ > *"배팅 금액을 찾을때 객체를 key 로 하도록 하고 이름 중복 체크를 없애는 방식으로 변경하였습니다!"*
93
+
94
+ → **MCP 룰 `requirement-as-constraint-not-additional`** ⭐⭐⭐ **신규** — *완성도 추가 제약 ≠ 요구사항*. PR #146·#151 (반란군 비유 *요구사항 vs 좋은 설계 자유 인정*) 결의 *요구사항 어휘* 누적 강화.
95
+
96
+ → **`object-as-key-not-name`** ⭐⭐ — *Map<Person, Int> = 객체 자체 키 + 이름 중복 의존 X*. PR #72 (`jvm-type-erase-firstclass-key`) 결 합류.
97
+
98
+ ### 4. `val` vs `var` 오버라이딩 어휘 (Thread 4)
99
+
100
+ ```kotlin
101
+ abstract class Person {
102
+ abstract val state: State // 또는 var
103
+ }
104
+
105
+ class Player : Person() {
106
+ override var state: State = ...
107
+ }
108
+ ```
109
+
110
+ reviewer:
111
+
112
+ > *"부모 클래스에서 val을 사용해도, 자식 클래스에서 var로 오버라이딩이 가능해요."*
113
+
114
+ 학생 자가 답변 + reviewer 부연:
115
+
116
+ > *"만약 부모 클래스에서도 객체를 생성해서 state를 변경한다면, var을 사용하시는 것이 좋습니다. 부모 클래스에서는 state를 변경하지 않고 자식 클래스에서만 state를 변경한다면, **부모에서는 val을 사용하고 자식에서는 var로 오버라이딩해서 사용하는 것을 다른 개발자들에게도 유도할 수 있는 장점이 있습니다.** 😅 하지만 지금 구조에서는 부모 클래스에서도 stay 함수를 통해 state를 변경하고 있으므로, var을 사용하는 것이 좋겠네요. 👍"*
117
+
118
+ → **MCP 룰 `val-vs-var-override-discipline`** ⭐⭐⭐ **신규** — *부모 val + 자식 var 오버라이딩 = 다른 개발자 유도 어휘*. PR #154 (`state-pattern-external-mutation-risk`) 결의 *상태 변경 위치 제어* 다른 축 — *상속 시점 가시화*.
119
+
120
+ ### 5. 람다 다중 전달 = 흐름 파악 부담 (Thread 10)
121
+
122
+ ```kotlin
123
+ // handOutCardToPlayers -> handOutCardsToPlayer -> handOutCard
124
+ // 모든 단계에 printPlayerCards 람다 전달
125
+ ```
126
+
127
+ reviewer:
128
+
129
+ > *"람다를 활용하면 위와 같은 장점이 있습니다. **지금 구조와 같이 handOutCardToPlayers -> handOutCardsToPlayer -> handOutCard 함수를 호출하면서 printPlayerCards 라는 람다를 계속해서 전달하게 되면, 나중에 코드를 분석할 때 람다로 무엇이 전달되는지 흐름을 파악하기 어려워지게 됩니다.** 수정을 권장하는 것이 아니므로 참고 부탁드립니다. 😄"*
130
+
131
+ → **MCP 룰 `lambda-chain-as-trace-complexity`** ⭐⭐⭐ **신규** — *람다 다중 전달 = 흐름 파악 부담 + reviewer 수정 권장 X 메타*.
132
+
133
+ → **`reviewer-recommend-not-required-meta`** ⭐⭐ — *"수정을 권장하는 것이 아니므로 참고 부탁드립니다"* — PR #62·#89 (`reviewer-self-reflection-mission-goal-return`) 결의 *reviewer 자가 강요 회피* 누적 6 PR 강화.
134
+
135
+ ### 6. GameProfit god-object + 디미터 법칙 (Thread 6)
136
+
137
+ ```kotlin
138
+ // GameProfit
139
+ participants.dealer.getPlayerProfit(player.state, playerBettingMoney).value
140
+ ```
141
+
142
+ reviewer:
143
+
144
+ > *"GameProfit 클래스는 participants, dealer, profit등 너무 많은 것을 알고 있어요. 디미터 법칙이 무엇인지 학습해보시고, 어떻게 개선하면 좋을지 고민해보면 어떨까요?"*
145
+
146
+ → **god-object + 디미터** = PR #38·#89 결 누적.
147
+
148
+ ### 7. `of` 함수 두 가지 일 (Thread 7)
149
+
150
+ reviewer: *"`of` 함수는 두 가지 이상의 일을 하고 있어요. (Score 객체 생성, 점수 계산 등) 하나의 함수에서는 한 가지 일만 할 수 있도록 코드를 개선해보면 어떨까요?"*
151
+
152
+ → **함수 한 가지 일** = 누적 다수.
153
+
154
+ ### 8. 함수명 vs 구현 일치 (Thread 8)
155
+
156
+ reviewer: *"함수명만 보면 ACE의 개수와 관련된 로직을 테스트하는 것으로 보이지만, 구현부에서는 ACE를 갖고 있는지에 대한 여부를 판단하고 있네요. 테스트를 하고자 하는 것과 함수명을 서로 일치시켜보면 어떨까요?"*
157
+
158
+ → **함수명 = 구현 의도 일치** = 누적 15+ PR.
159
+
160
+ ### 9. 부생성자 vs 팩토리 메서드 (Thread 2)
161
+
162
+ reviewer: *"부생성자를 통해서 money와 rate를 가지고 Profit 객체를 만들 수 있도록 잘 구현해주셨네요. 👍 지금도 좋지만, \"팩토리 메서드\"에 대해서 학습해보시고 \"팩토리 메서드\"를 적용해보면 어떨까요?"*
163
+
164
+ → **팩토리 메서드** = 누적 다수.
165
+
166
+ ### 10. 블랙잭 수익 테스트 추가 (Thread 9)
167
+
168
+ reviewer: *"플레이어가 블랙잭으로 이겼을 때에 대한 수익도 테스트 코드를 작성해보면 어떨까요?"*
169
+
170
+ → **블랙잭 양측 도메인 룰 테스트** = 누적.
171
+
172
+ ### 11. private 접근자 + 개행 컨벤션 (Thread 0·11·12)
173
+
174
+ reviewer (Thread 0): *"클래스 내부에서만 사용하는 상수라면, private 접근자를 붙여보면 어떨까요?"*
175
+
176
+ reviewer (Thread 11): *"변수와 함수 사이는 개행으로 구분해주는 것이 좋습니다."*
177
+
178
+ → 가독성 컨벤션 = 누적.
179
+
180
+ ## 대표 인용
181
+
182
+ > [BeokBeok Thread 1]
183
+ > *"프로퍼티는 행동이 아닌 상태를 가져야만 합니다. 행동인 경우에는 함수로 구현해보면 어떨까요?"*
184
+
185
+ → **프로퍼티 vs 함수 = 상태 vs 행동 어휘 정점**.
186
+
187
+ > [BeokBeok Thread 5]
188
+ > *"불필요한 \"간접 호출\"은, 코드 분석 시 함수 호출부를 계속해서 타고 들어가야 하므로, 오히려 코드를 이해하기 복잡하게 만들어요."*
189
+
190
+ → **불필요 위임 = 분석 부담 어휘 (PR #72 반대 어휘)**.
191
+
192
+ > [BeokBeok Thread 3]
193
+ > *"프로그램의 완성도를 높히는 것도 중요하지만, 가급적이면 요구사항을 준수하도록 프로그램을 작성해보면 어떨까요?"*
194
+
195
+ → **요구사항 vs 완성도 추가 제약 어휘**.
196
+
197
+ > [BeokBeok Thread 4]
198
+ > *"부모에서는 val을 사용하고 자식에서는 var로 오버라이딩해서 사용하는 것을 다른 개발자들에게도 유도할 수 있는 장점이 있습니다."*
199
+
200
+ → **val/var 오버라이딩 어휘**.
201
+
202
+ > [BeokBeok Thread 10]
203
+ > *"람다를 계속해서 전달하게 되면, 나중에 코드를 분석할 때 람다로 무엇이 전달되는지 흐름을 파악하기 어려워지게 됩니다. 수정을 권장하는 것이 아니므로 참고 부탁드립니다."*
204
+
205
+ → **람다 다중 전달 = 흐름 부담 + reviewer 권장 X 메타**.
206
+
207
+ > [SeongHoonC Thread 5]
208
+ > *". 으로 타고 들어가는 것을 줄이고자 get을 호출하지 않고 불필요한 코드를 많이 늘리는 것은 코드를 복잡하게 만드는 것이므로 동의합니다."*
209
+
210
+ → **학생 자가 위임 비용 자각 어휘**.
211
+
212
+ ## 얻은 교훈 (보편)
213
+
214
+ 1. **프로퍼티 = 상태 / 함수 = 행동** — **MCP 룰 `property-vs-function-state-vs-behavior` 후보** ⭐⭐⭐ 정점. PR #62 결 누적 2 PR.
215
+ 2. **불필요 위임 = 분석 부담 (PR #72 반대 어휘)** — **MCP 룰 `unnecessary-indirect-call` 후보** ⭐⭐⭐. PR #72 `forward-compatible-delegation` 트레이드오프.
216
+ 3. **요구사항 vs 완성도 추가 제약** — **MCP 룰 `requirement-as-constraint-not-additional` 후보** ⭐⭐⭐.
217
+ 4. **val/var 오버라이딩 어휘** — **MCP 룰 `val-vs-var-override-discipline` 후보** ⭐⭐⭐.
218
+ 5. **람다 다중 전달 = 흐름 파악 부담** — **MCP 룰 `lambda-chain-as-trace-complexity` 후보** ⭐⭐⭐.
219
+ 6. **점진적 리팩터링 어려움 학생 자가 어휘** — **MCP 룰 `pr-body-incremental-refactor-difficulty` 후보** ⭐⭐.
220
+ 7. **reviewer 수정 권장 X 메타 누적 6 PR 강화** = MCP 핵심 가치 어휘 정점.
221
+
222
+ ## 메타 노트
223
+
224
+ - **SeongHoonC 양 단계 완성 (1단계 #16 batch 14 → 2단계 #54)** — 1단계 → 2단계 *상태 패턴 처음 적용 + 점진적 변경 학생 자가 어려움 어휘*.
225
+ - **BeokBeok reviewer 누적 4 PR (#12 + #15 + #38 + #47 + #54)** — 일관 가이드 + 학생 자가 답변 유도 어휘.
226
+ - **위임 가치 vs 부담 트레이드오프** = MCP `oh-my-oop` 핵심 가치 어휘 정점 — PR #72 (위임 가치) vs PR #54 (위임 부담) — **단일 답 X 어휘**.
227
+ - **reviewer 자가 강요 회피 어휘 누적 6 PR** (#62 ghojeong + #89 ghojeong + #115 laco-dev + #73 ghojeong + #106 말리빈 + #54 BeokBeok) — MCP `oh-my-oop` 핵심 가치 어휘 정점.