Community

๐Ÿ‡ฉ๐Ÿ‡ช ๋ณ€์ˆ˜๋ช…์„ ๋งŒ๋“ค ๋•Œ๋Š” ๋…์ผ ์‚ฌ๋žŒ์ฒ˜๋Ÿผ // ๋…์ผ์‹ ํ‘œ๊ธฐ๋ฒ•

๋…์ผ์— ์‚ด๊ณ  ์žˆ์œผ๋‹ˆ, ์ฒซ ๊ฒŒ์‹œ๊ธ€์€ ๋…์ผ์–ด์™€ ๊ด€๋ จ๋œ ์ด์•ผ๊ธฐ๋ฅผ ์ ์–ด๋ณผ๊นŒ ํ•ฉ๋‹ˆ๋‹ค. ๋…์ผ์–ด ์‚ฌ์ „์— ํ‘œ๊ธฐ๋œ ๊ฐ€์žฅ ๊ธด ๋‹จ์–ด๋Š” ์ž๋™์ฐจ ์ฑ…์ž„๋ฐฐ์ƒ Kraftfahrzeughaftpflichtversicherung (ํฌ๋ผํ”„ํŠธํŒŒ์ดˆ์ด๊ทธ -ํ•˜ํ”„ํŠธํ”Œ๋ฆฌ์‹œํŠธ-ํŽ˜์–ด์ง€์…”๋ฃฝ)๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋ฐœ์Œ ์กฐ์ฐจ๋„ ํž˜๋“ ๋ฐ์š”. ์‚ฌ์ „์— ๋“ฑ๋ก๋˜์ง€ ์•Š์•˜์ง€๋งŒ ๋ฌด๋ฃŒ 79๊ธ€์ž์— ์œก๋ฐ•ํ•˜๋Š” ๋‹จ์–ด๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ๋“ค๋ฉด Donaudampfschiffahrtselektrizitรคtenhauptbetriebswerkbauunterbeamtengesellschaft๏ผˆ๋„๋‚˜์šฐ๋‹ดํ”„์‰ฝํŒ”์ธ ์ผ๋ ‰ํŠธ๋ฆฌ์น˜ํ…Œํ…ํ•˜์šฐํ”„ํŠธ๋ฒ ํŠธ๋ฆฌ๋ธŒ์Šค๋ฒ ๋ฅดํฌ๋ฐ”์šฐ์šดํ„ฐ๋ฒ ์•”ํ…๊ฒŒ์ ค์ƒคํ”„ํŠธ, ํ•œ๊ตญ์–ด๋กœ ๋„๋‚˜์šฐ ๊ธฐ์„  ์ „๊ธฐ์‚ฌ์—… ๋ณธ๊ณต์žฅ ๊ณต์‚ฌ๋ถ€๋ฌธ ํ•˜๊ธ‰๊ด€๋ฆฌ์กฐํ•ฉ) ๊ฐ™์ด์š”. ์ด์ฒ˜๋Ÿผ ๋…์ผ์–ด๋Š” ๋‹จ์–ด์™€ ๋‹จ์–ด๊ฐ€ ํ•ฉ์ณ์ง„ ํ•ฉ์„ฑ์–ด์—๋Š” ๋„์–ด์“ฐ๊ธฐ๋ฅผ ํ•˜์ง€ ์•Š๋Š” ํŠน์ง•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด์ฉ์ง€ ๋‹จ์–ด์ž์ฒด๋„ ๋งˆ์น˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ์˜ ๋ณ€์ˆ˜๋ช… ๊ฐ™์ด ๋ณด์ด์ฃ ? ๊ตณ์ด ๋ถˆํŽธํ•˜๋”๋ผ๋„ ๋ช…์‹œ์ ์ด๋ฉฐ ๊ตฌ์ฒด์ ์œผ๋กœ ํ‘œํ˜„ํ•˜๊ณ ์ž ํ•˜๋Š” ๋…์ผ ์‚ฌ๋žŒ๋“ค์˜ ์–ธ์–ด์  ์Šต๊ด€ ๋•Œ๋ฌธ์— ์œ ๋Ÿฝ์—์„œ๋Š” ํด๋ฆฐ ์ฝ”๋“œ๋ฅผ ๋…ผํ•  ๋•Œ '๋…์ผ์‚ฌ๋žŒ์ฒ˜๋Ÿผ ๋ณ€์ˆ˜ ์ด๋ฆ„์„ ์ง€์–ด๋ผ'๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ๋…์ผ์‹ ํ‘œ๊ธฐ๋ฒ•์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ต๋‹ˆ๋‹ค. ๊ณผ๊ฑฐ์—๋Š” ํ—๊ฐ€๋ฆฌ์•ˆ ํ‘œ๊ธฐ๋ฒ•์ฒ˜๋Ÿผ ์ ‘๋‘์–ด/ํƒ€์ž…๋ช… ๋“ฑ์„ ์‚ฌ์šฉํ•ด ๋ณ€์ˆ˜๋ช…์„ ๋ฌด์กฐ๊ฑด ์ตœ๋Œ€ํ•œ ์งง๊ณ  ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์“ฐ๋Š” ๊ฒƒ์ด ์œ ํ–‰ํ–ˆ๋Š”๋ฐ์š”. ์ตœ๊ทผ์—๋Š” ๋ณ€์ˆ˜, ํ•จ์ˆ˜ ๋“ฑ ์ด๋ฆ„์— ์•”ํ˜ธํ™” ๊ฐ™์ด ๋ณด์ด๋Š” ์ถ•์•ฝ์–ด ์‚ฌ์šฉ์„ ์ตœ๋Œ€ํ•œ ์ง€์–‘ํ•˜๋ผ๊ณ  ๋งํ•ฉ๋‹ˆ๋‹ค. ๋‹จ์–ด ์ˆ˜๊ฐ€ ๊ฝค ๊ธธ๋”๋ผ๋„ ๊ตฌ์ฒด์ ์ด๊ณ  ๋ช…์‹œ์ ์œผ๋กœ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ์ฝ”๋“œ ๊ฐ€๋…์„ฑ์„ ๋†’์ธ๋‹ค๋Š” ์ด์œ ์ด์ง€์š”. ์ด๋ฅผ ํ…Œ๋ฉด ํŒŒ์ผ์„ ์—ฌ๋Š” ๋ฉ”์„œ๋“œ ์ด๋ฆ„์„ fopen ๋Œ€์‹  openFile์„ ์‚ฌ์šฉํ•˜๊ณ , ์œ ํšจ์„ฑ ์—๋Ÿฌ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋Š” throwVE ๋Œ€์‹  throwValidationError์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ฐ„๋‹จํ•œ ํ•จ์ˆ˜๋„ Foo/Bar/Baz ์‚ฌ์šฉํ•˜์ง€ ๋ง๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ์ €๋Š” ์‹ค๋ฌด์—์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ reduce, filter, map ๊ฐ™์€ iterators ์—์„œ๋„ acc, cur, i, n์™€ ๊ฐ™์€ ๋ณ€์ˆ˜๋ช…์„ ์ตœ๋Œ€ํ•œ ์‚ฌ์šฉํ•˜์ง€ ๋ง๋ผ๊ณ  ์—ฌ๋Ÿฌ๋ฒˆ ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. UI ์š”์†Œ๋„ btn ๋ง๊ณ  button์ด๋ผ๊ณ  ํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์งํ•˜๊ณ ์š”. ๊ทธ๋Ÿผ ์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ๋ณด๊ณ  ๋…์ผ์‹ ํ‘œ๊ธฐ๋ฒ•์„ ์ ์šฉํ•ด ๋ณผ๊นŒ์š”? ์•„๋ž˜ ํ•จ์ˆ˜๋ฅผ ์–ด๋–ป๊ฒŒ ๊ฐœ์„ ํ•ด ๋ณผ ์ˆ˜ ์žˆ์„๊นŒ์š”? const one = (a) => { let n = a .split('\n') .map(x => parseInt(x)); for (let i = 0; i x == foo); if (n.filter(x => x == foo).length == 1) { return n[i] * bar; } } } ์ด ํ•จ์ˆ˜๋Š” ๋ฌธ์ž์—ด ์ž…๋ ฅ๊ฐ’ ์ค‘ ์ •์ˆ˜๋งŒ ์ถ”์ถœํ•˜์—ฌ ๋ฐฐ์—ด์„ ๋งŒ๋“  ๋‹ค์Œ, ๋‘ ๊ฐœ์˜ ์ˆซ์ž๊ฐ€์˜ ์ด ํ•ฉ์ด 2020์ด ๋˜๋Š” ์š”์†Œ๋ฅผ ์ฐพ๊ณ  ๋‘ ํ•ฉ์˜ ๊ณฑ์„ ๊ณ„์‚ฐํ•˜๋„ค์š”. ์—ฐ์‚ฐ ๊ณผ์ •์ด ๊ฝค ๋ณต์žกํ•ฉ๋‹ˆ๋‹ค. ์ด์ œ ์ด ํ•จ์ˆ˜์— ๋…์ผ์‹ ํ‘œ๊ธฐ๋ฒ•์„ ์ ์šฉํ•ด๋ณผ๊นŒ์š”?. const findProductOfTwoEntriesWhoseSumIs2020 = (input) => { let numbers = input .split('\n') .map(x => parseInt(x)); for (let i = 0; i x == partOneOf2020); if (numbers.filter(x => x == partOneOf2020).length == 1) { return numbers[i] * partTwoOf2020; } } } ์• ๋งค๋ชจํ˜ธํ•œ ํ•จ์ˆ˜ ์ด๋ฆ„์ธ one๋ฅผ findProductOfTwoEntriesWhoseSumIs2020์œผ๋กœ ๋ฐ”๊พธ์—ˆ์–ด์š”. ํ•จ์ˆ˜ ์ด๋ฆ„์ด ๊ฝค ๊ธธ์–ด์กŒ์ง€๋งŒ ํ•จ์ˆ˜ ๋ณธ๋ฌธ์„ ์ฝ์ง€ ์•Š๊ณ ๋„ ํ•จ์ˆ˜๊ฐ€ ์–ด๋–ค ์ผ์„ ํ•˜๋Š”์ง€ ๋ฐ”๋กœ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ฒ˜๋Ÿผ ๋ชฉ์ ๊ณผ ์˜๋„๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ๋…์ผ์‹ ํ‘œ๊ธฐ๋ฒ•์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. foo์™€ bar๊ฐ™์€ ๋žœ๋คํ•œ ๋ณ€์ˆ˜ ์ด๋ฆ„๋„ partOneOf2020, partTwoOf2020์œผ๋กœ ๋ฐ”๊พธ์–ด ๊ฐ ๋ณ€์ˆ˜๊ฐ€ ๋ฌด์—‡์„ ์ง€์นญํ•˜๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ•จ์ˆ˜์˜ ์ธ์ž a๋„ input์œผ๋กœ ๋ฐ”๊พธ์–ด ์–ด๋–ค ๋ฐ์ดํ„ฐ์ธ์ง€ ์•Œ ์ˆ˜ ์žˆ๊ณ ์š”. ์•”ํ˜ธ ๊ฐ™์€ ๋ณ€์ˆ˜ ์ด๋ฆ„์„ ํ•ด์„ํ•˜์ง€ ์•Š์•„๋„ ๋˜๊ณ ์š”. ์ž‘์„ฑ๋œ ๊ทธ๋Œ€๋กœ๋ฅผ ์ฝ์–ด๋„ ๋ˆ„๊ตฌ๋‚˜ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์–ด์š”. 'ํ‰๋ฒ”ํ•œ ์–ธ์–ด(์˜์–ด)'๋กœ ๋ง์ด์ฃ . ------- ์ฐธ๊ณ  ๋งํฌ https://chrisdone.com/posts/german-naming-convention/ https://slides.com/adriennetacke/documentation-the-missing-pieces/fullscreen#/20

์•Œ๋ฆผ

์•Œ๋ฆผ์ด ์—†์Šต๋‹ˆ๋‹ค