๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“ Front-End/JavaScript

[JS][์šฐํ…Œ์ฝ”] ํ”„๋ฆฌ์ฝ”์Šค 2์ฃผ์ฐจ ๊ณตํ†ต ํ”ผ๋“œ๋ฐฑ์„ ํ†ตํ•œ KPTํšŒ๊ณ 

by Sun A 2024. 10. 31.

๊ธ€์˜ ๋ชฉํ‘œ

2์ฃผ์ฐจ ๊ณตํ†ต ํ”ผ๋“œ๋ฐฑ์„ ํ†ตํ•ด 2์ฃผ์ฐจ์˜ ์ฝ”๋“œ๋ฅผ ๋˜๋Œ์•„๋ณด๊ณ  3์ฃผ์ฐจ๋ฅผ ์‹œ์ž‘ํ•ด๋ณผ ์ƒ๊ฐ์ด๋‹ค.

โ€ป ํ•ด๋‹น ๊ธ€์€ ์šฐ์•„ํ•œํ…Œํฌ์ฝ”์Šค์—์„œ ์˜ฌ๋ ค์ค€ 2์ฐจ ๊ณตํ†ต ํ”ผ๋“œ๋ฐฑ์„ ์ฐธ๊ณ ํ•˜์—ฌ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ณตํ†ต ํ”ผ๋“œ๋ฐฑ์€ ํ”„๋ฆฌ์ฝ”์Šค ์ฐธ์—ฌ์ž๋“ค์—๊ฒŒ ๊ฐœ๋ณ„์ ์œผ๋กœ ๊ณต์œ ๋œ ๋งํฌ๊ฐ€ ์กด์žฌํ•˜๋ฉฐ, ์ €๋Š” ํ•ด๋‹น ๋งํฌ๋Š” ๊ณต์œ ํ•  ์ˆ˜ ์—†๊ณ  ๊ณตํ†ต ํ”ผ๋“œ๋ฐฑ์„ ํ™•์ธํ•˜๋Š” ๊ณผ์ •์—์„œ์˜ ์ƒ๊ฐ๋“ค์„ ํ•ด๋‹น ๊ธ€์— ์ •๋ฆฌํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค.

 

2์ฃผ์ฐจ ํ”„๋ฆฌ์ฝ”์Šค ๊ณผ์ •์— ๋Œ€ํ•œ ํ›„๊ธฐ

 2์ฃผ์ฐจ์˜ ํ•™์Šต ๋ชฉํ‘œ๋Š” ์—ฌ๋Ÿฌ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ํฐ ํ•จ์ˆ˜๋ฅผ ๋‹จ์ผ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ž‘์€ ํ•จ์ˆ˜๋“ค๋กœ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ์ด์—ˆ๋‹ค. 3์ฃผ์ฐจ ํ•™์Šต ๋ชฉํ‘œ๋Š” ๊ด€๋ จ๋œ ํ•จ์ˆ˜๋“ค์„ ๋ฌถ์–ด ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค๊ณ , ๊ฐ์ฒด๋“ค์ด ํ˜‘๋ ฅํ•˜์—ฌ ํ•˜๋‚˜์˜ ํฐ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ง€๊ธˆ๋ณด๋‹ˆ Controller๋ฅผ ๋งŒ๋“ค๋ฉด์„œ ์ด๋ฏธ ํ•˜๋‚˜์˜ ํฐ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ํด๋ž˜์Šค๋ฅผ ๊ตฌํ˜„ํ•ด๋ณธ ๊ฒƒ ๊ฐ™๋‹ค. ์ด ๋ฐฉ๋ฒ•์„ ์‘์šฉํ•ด, 3์ฃผ์ฐจ์—๋Š” ํด๋ž˜์Šค๋ฅผ ๋” ์ •๊ตํ•˜๊ฒŒ ๋งŒ๋“ค๊ณ , ํ•จ์ˆ˜์™€ ํด๋ž˜์Šค์— ๋Œ€ํ•œ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ์ž‘์„ฑ์— ์ง‘์ค‘ํ•ด์•ผ๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.

 ๋˜ํ•œ 2์ฃผ์ฐจ ๋ชฉํ‘œ ์ค‘ ํ•˜๋‚˜์˜€๋˜ ํ…Œ์ŠคํŠธ ๋„๊ตฌ ์‚ฌ์šฉ๋ฒ•์„ ๋ฐฐ์šฐ๋Š” ๋ถ€๋ถ„์ด ์•„์ง ์‰ฝ์ง€ ์•Š์•˜๋‹ค. ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž˜ ์งœ๋Š” ๊ฒƒ๊ณผ ๋””๋ฒ„๊น…์„ ํ†ตํ•œ ์˜ค๋ฅ˜ ์ˆ˜์ •์— ์ต์ˆ™ํ•˜์ง€ ์•Š๋‹ค ๋ณด๋‹ˆ, ์œ ํŠœ๋ธŒ์—์„œ ๊ฐ•์˜๋ฅผ ์ฐพ์•„ ๊ธ‰ํ•˜๊ฒŒ ๋ฐฐ์šฐ๋ ค๊ณ  ํ–ˆ๋Š”๋ฐ ์ƒ๊ฐ๋ณด๋‹ค ๊ฐ•์˜๊ฐ€ ๋งŽ์ง€ ์•Š์•˜๋‹ค. ์•„๋งˆ ์ธํ”„๋Ÿฐ์—์„œ ๊ด€๋ จ ๊ฐ•์˜๋ฅผ ์ฐพ์•„ ์ฒœ์ฒœํžˆ ๋ฐฐ์›Œ์•ผ ํ•  ๊ฒƒ ๊ฐ™๋‹ค.

 1์ฃผ์ฐจ์— ํ•จ์ˆ˜ ์ž‘์„ฑ๋งŒ์œผ๋กœ๋„ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ ธ๋˜ ๋‚˜์˜€๋Š”๋ฐ, ์ด์ œ๋Š” ํ•จ์ˆ˜์™€ ๋ฉ”์„œ๋“œ๋ฅผ ์ž‘์€ ์—ญํ• ๋กœ ๋ถ„๋ฆฌํ•˜๊ณ , ์ด๋ฅผ ํด๋ž˜์Šค๋กœ ๊ตฌ์„ฑํ•˜์—ฌ ํ•˜๋‚˜์˜ ํฐ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋„๋ก ์‚ฌ๊ณ ํ•˜๋Š” ๊ณผ์ •๊นŒ์ง€ ๋ฐœ์ „ํ–ˆ๋‹ค๋Š” ์ ์ด ๋ฟŒ๋“ฏํ•˜๋‹ค. ๋ฐฉํ–ฅ์„ฑ์„ ์ œ์‹œํ•ด์ฃผ๋Š” ํ…Œ์ŠคํŠธ๊ฐ€ ์žˆ๊ณ  ์ด๋ฅผ ํ†ต๊ณผํ•˜๋ฉด์„œ ๋А๊ปด์ง€๋Š” ์„ฑ์ทจ๊ฐ ๋•๋ถ„์— ์„ฑ์žฅํ•˜๋Š” ๊ธฐ๋ถ„์ด ๋“ ๋‹ค.

 

๊ณตํ†ต ํ”ผ๋“œ๋ฐฑ ํ™•์ธ

[README.md๋ฅผ ์ƒ์„ธํžˆ ์ž‘์„ฑํ•œ๋‹ค]

 ๋‚˜ ์ž์‹ ์—์„ธ README.md ์˜ ์—ญํ• ์„ ๋ช…ํ™•ํ•˜๊ฒŒ ์•Œ์•„๋ณด๊ณ  ์ž‘์„ฑ์„ ์‹œ์ž‘ํ–ˆ๋Š” ์ง€ ๋ฌผ์–ด๋ณธ๋‹ค๋ฉด ์•„๋งˆ ์•„๋‹ˆ๋ผ๊ณ  ๋Œ€๋‹ตํ•  ๊ฒƒ์ด๋‹ค.. ๋ฌด์—‡์ด๋“  ๊ถ๊ธˆ์ฆ์„ ๊ฐ€์ง€๊ณ  "์™œ?"๋ผ๋Š” ์งˆ๋ฌธ์„ ๋˜์กŒ์–ด์•ผ ํ•˜๋Š”๋ฐ ๋ฆฌ๋“œ๋ฏธ ํŒŒ์ผ์— ๋Œ€ํ•œ ๋ช…ํ™•ํ•œ ์—ญํ• ์„ ์ƒ๊ฐํ•˜์ง€ ๋ชปํ–ˆ๋‚˜๋ณด๋‹ค. ์–ด์ฉŒ๋ฉด ๋ชจ๋‘๊ฐ€ ์š”๊ตฌ์‚ฌํ•ญ์„ ์ž‘์„ฑํ•˜๋Š” ํŒŒ์ผ์ด๊ณ  ์ฝ”๋“œ์— ๋Œ€ํ•œ ์„ค๋ช…์ด ๋˜๋Š” ๋ฌธ์„œ์ด๋‹ˆ๊นŒ ์—ฌ๊ธฐ์— ์ž‘์„ฑํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ ์•„๋‹Œ๊ฐ€? ๋ผ๋Š” ์ƒ๊ฐ์„ ํ–ˆ๋‹ค.

๊ทผ๋ฐ ๊ณตํ†ต ํ”ผ๋“œ๋ฐฑ์„ ๋ณด๋‹ˆ "์†Œ์Šค ์ฝ”๋“œ ์ด์ „์— ํ”„๋กœ์ ํŠธ์˜ ๊ฐœ์š”๋ฅผ ์†Œ๊ฐœํ•˜๋Š” ๋ฌธ์„œ" ๋ผ๊ณ  ์ ์–ด์ฃผ์…จ๋‹ค. ์š”๊ตฌ์‚ฌํ•ญ์— ๋Œ€ํ•œ ์ฒดํฌ๋ฆฌ์ŠคํŠธ๋งŒ ๋‹ด์•„์„œ ๊ด€๋ฆฌํ•˜๋Š” ํŒŒ์ผ์ธ๊ฐ€? ํ•˜๋Š” ๋ง‰์—ฐํ•œ ๊ฒฐ๋ก ์„ ๋‚ด๋ ธ๋Š”๋ฐ "ํ”„๋กœ์ ํŠธ์˜ ๊ฐœ์š”"๋ฅผ ๋‹ด์€ ๋ฌธ์„œ๊ฐ€ ๋˜์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๋ชฐ๋ž๋˜ ๊ฒƒ ๊ฐ™๋‹ค.

ํ•ด๋‹น ํ”„๋กœ์ ํŠธ๊ฐ€ ์–ด๋–ค ํ”„๋กœ์ ํŠธ์ธ์ง€, ์ฃผ์š” ๊ธฐ๋Šฅ์ด ๋ฌด์—‡์ธ์ง€ ์†Œ๊ฐœํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ๋ง์”€ํ•ด์ฃผ์…จ๋‹ค. ๋งˆํฌ๋‹ค์šด ๋ฌธ๋ฒ•์„ ํ™œ์šฉํ•˜์—ฌ 3์ฃผ์ฐจ์˜ ๋ฆฌ๋“œ๋ฏธ์—๋Š” ์–ด๋–ค ์ฝ”๋“œ ๊ตฌํ˜„์ธ์ง€ ๊ฐ„๋žตํ•œ ์„ค๋ช…์„ ์ถ”๊ฐ€ํ•œ ๋ฆฌ๋“œ๋ฏธ ํŒŒ์ผ์„ ์ž‘์„ฑํ•ด์•ผ๊ฒ ๋‹ค.

[๊ธฐ๋Šฅ ๋ชฉ๋ก์„ ์žฌ๊ฒ€ํ† ํ•œ๋‹ค]

 ๊ธฐ๋Šฅ ๋ชฉ๋ก์„ ์ž‘์„ฑํ•  ๋•Œ ํด๋ž˜์Šค ์„ค๊ณ„์™€ ๊ตฌํ˜„, ๋ฉ”์„œ๋“œ ์„ค๊ณ„์™€ ๊ตฌํ˜„ ๊ฐ™์€ ์ƒ์„ธํ•œ ๋‚ด์šฉ์€ ํฌํ•จํ•˜์ง€ ์•Š๋Š”๋‹ค. 

๋†€๋ž๊ฒŒ๋„ ํ”ผ๋“œ๋ฐฑ์˜ ๋‘ ๊ฐ€์ง€ ์ค‘ ํ•œ ๊ฐ€์ง€๋งŒ ๋™์ผํ•˜๊ฒŒ ์ž‘์„ฑํ•˜์˜€๋‹ค.

์˜ˆ์™ธ ์ƒํ™ฉ์„ ํ•จ๊ป˜ ์ •๋ฆฌํ•œ ๊ฒƒ์€ ์ž˜ํ–ˆ์ง€๋งŒ ํด๋ž˜์Šค ์ด๋ฆ„, ๋ฐ˜ํ™˜๊ฐ’ ๋“ฑ์€ ์–ธ์ œ๋“ ์ง€ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์–ด์„œ ๊ธฐ๋Šฅ ๋ชฉ๋ก์„ ์ž‘์„ฑํ•  ๋•Œ ํฌํ•จํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹๋‹ค๊ณ  ํ•œ๋‹ค.

๋ฐ˜ํ™˜๊ฐ’์„ ์ž…๋ ฅํ•˜๊ณ  ์˜ˆ์™ธ์‚ฌํ•ญ์„ ์ถ”๊ฐ€ํ•ด๋‘” 2์ฃผ์ฐจ์ด๋‹ค. 

๊ฒฐ๋ก ์ ์œผ๋กœ ๊ตฌํ˜„ ๊ฐ™์€ ์ƒ์„ธํ•œ ๋‚ด์šฉ์€ ํฌํ•จํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹์œผ๋‹ˆ ์ตœ๋Œ€ํ•œ ๊ธฐ๋Šฅ ๋ชฉ๋ก์„ ์ค‘์‹ฌ์œผ๋กœ ์ž‘์„ฑํ•ด์•ผ๊ฒ ๋‹ค.

// ์˜ˆ์‹œ (๋ฆฌ๋“œ๋ฏธ ์ž‘์„ฑํ•˜๋ฉด์„œ ๋ณ€๋™ ๊ฐ€๋Šฅ)

ํ”„๋กœ์ ํŠธ ์ฃผ์ œ : ๋„์„œ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ ๊ตฌ์ถ•
- ๋„์„œ ๋“ฑ๋ก ๊ธฐ๋Šฅ

- [ ] ์ƒˆ ๋„์„œ๋ฅผ ์‹œ์Šคํ…œ์— ๋“ฑ๋กํ•œ๋‹ค.

- ์˜ˆ์™ธ์ƒํ™ฉ

- [ ] ์ž…๋ ฅ๋œ ๋„์„œ ์ •๋ณด๊ฐ€ ๋ˆ„๋ฝ๋œ ๊ฒฝ์šฐ

[๊ธฐ๋Šฅ ๋ชฉ๋ก์„ ์—…๋ฐ์ดํŠธํ•œ๋‹ค]

 ๋ฆฌ๋“œ๋ฏธ ํŒŒ์ผ์˜ ๊ธฐ๋Šฅ ๋ชฉ๋ก์€ ๊ตฌํ˜„ ๊ณผ์ •์—์„œ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ฒ˜์Œ์— ์ž‘์„ฑํ•  ๋•Œ ๋ถ€๋‹ด์„ ๊ฐ–๋Š” ๊ฒƒ๋ณด๋‹ค ์ง€์†์ ์œผ๋กœ ์—…๋ฐ์ดํŠธ ํ•˜๋Š” ๊ฒƒ์ด ๋‚ซ๋‹ค๊ณ  ํ•œ๋‹ค.

1์ฃผ์ฐจ์—๋Š” ์ฒ˜์Œ ์ž‘์„ฑํ•˜๋Š” ๋ฆฌ๋“œ๋ฏธ ํŒŒ์ผ์ธ ๋งŒํผ ์ž‘์„ฑ์— ๋งŽ์€ ์‹œ๊ฐ„์„ ๋“ค์˜€๋Š”๋ฐ 2์ฃผ์ฐจ์—๋Š” ๊ธฐ๋Šฅ ๊ตฌํ˜„์ด ์–ด๋ ค์šธ ๊ฒƒ ๊ฐ™์•„์„œ ๊ธฐ๋Šฅ ๋ชฉ๋ก์„ ๋น ๋ฅด๊ฒŒ ์ •๋ฆฌํ•˜๊ณ  ๊ฐœ๋ฐœ์— ๋“ค์–ด๊ฐ€๋Š” ๊ฒŒ ๋ชฉํ‘œ์˜€๋‹ค. ๊ทธ๋Ÿฌ๋‹ค๋ณด๋‹ˆ ์˜ˆ์™ธ ์‚ฌํ•ญ ์ฒ˜๋ฆฌ๋ฅผ ๋งŽ์ด ๋ชปํ•ด์„œ ์•„์‰ฝ๊ฒŒ ๋๋‚ฌ๋‹ค.

์ด๋ฒˆ์—๋Š” ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ˜์˜ํ•˜์—ฌ ๊ธฐ๋Šฅ ๋ชฉ๋ก์„ ์ž‘์„ฑํ•˜๊ณ  ๊ธฐ๋Šฅ ๋ชฉ๋ก๋Œ€๋กœ ๊ตฌํ˜„ํ•˜๋ฉด์„œ ์˜ˆ์™ธ ์‚ฌํ•ญ์„ ๋ฐ”๋กœ๋ฐ”๋กœ ์ถ”๊ฐ€ํ•˜์—ฌ ์‚ด์•„์žˆ๋Š” ๋ฌธ์„œ๋กœ ์œ ์ง€๋  ์ˆ˜ ์žˆ๋„๋ก ๋…ธ๋ ฅํ•ด๋ณด์•„์•ผ๊ฒ ๋‹ค.

[๊ฐ’์„ ํ•˜๋“œ ์ฝ”๋”ฉํ•˜์ง€ ์•Š๋Š”๋‹ค]

 ์ฝ”๋“œ ๋‚ด์—์„œ ๋ฌธ์ž์—ด์ด๋‚˜ ์ˆซ์ž ๊ฐ’์„ ํ•˜๋“œ ์ฝ”๋”ฉํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋Œ€์‹  ์ƒ์ˆ˜(const)๋ฅผ ์ •์˜ํ•˜๊ณ  ์˜๋ฏธ ์žˆ๋Š” ์ด๋ฆ„์„ ๋ถ€์—ฌํ•˜์—ฌ ํ•ด๋‹น ๊ฐ’์ด ์–ด๋–ค ์—ญํ• ์„ ํ•˜๋Š”์ง€ ๋ช…ํ™•ํžˆ ๋“œ๋Ÿฌ๋‚ธ๋‹ค. 

// ํ•˜๋“œ์ฝ”๋”ฉ ๋œ ์˜ˆ
function calculateTotal(price) {
    return price * 0.1; // ์—ฌ๊ธฐ์„œ 0.1์€ ์„ธ์œจ๋กœ ๊ฐ€์ •
}
// ์ƒ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ ์ฝ”๋“œ

const TAX_RATE = 0.1;

function calculateTotal(price) {
    return price * TAX_RATE;
}

[๊ตฌํ˜„ ์ˆœ์„œ๋„ ์ฝ”๋”ฉ ์ปจ๋ฒค์…˜์ด๋‹ค]

ํด๋ž˜์Šค๋Š” ํ•„๋“œ, ์ƒ์„ฑ์ž, ๋ฉ”์„œ๋“œ ์ˆœ์œผ๋กœ ์ž‘์„ฑํ•œ๋‹ค.

gpt์—๊ฒŒ ์œ„์˜ ์ˆœ์„œ์— ๋งž๋Š” ์˜ˆ์‹œ ํด๋ž˜์Šค๋ฅผ ํ•˜๋‚˜ ์ž‘์„ฑํ•ด๋‹ฌ๋ผ๊ณ  ๋ถ€ํƒํ•ด๋ณด์•˜๋‹ค.

class Person {
    // ํ•„๋“œ ์ •์˜
    constructor(name, age) {
        // ์ƒ์„ฑ์ž ์ •์˜ ๋ฐ ํ•„๋“œ ์ดˆ๊ธฐํ™”
        this.name = name;
        this.age = age;
    }

    // ๋ฉ”์„œ๋“œ ์ •์˜
    displayInfo() {
        console.log(`์ด๋ฆ„: ${this.name}, ๋‚˜์ด: ${this.age}`);
    }
}

// ๊ฐ์ฒด ์ƒ์„ฑ ๋ฐ ์‚ฌ์šฉ ์˜ˆ์‹œ
const person1 = new Person("ํ™๊ธธ๋™", 30);
person1.displayInfo();  // ์ถœ๋ ฅ: ์ด๋ฆ„: ํ™๊ธธ๋™, ๋‚˜์ด: 30

ํ•„๋“œ๋Š” ํด๋ž˜์Šค๊ฐ€ ๊ฐ€์ง€๋Š” ๊ณ ์œ ์˜ ์†์„ฑ์„ ์˜๋ฏธํ•œ๋‹ค. ์œ„์˜ ์ฝ”๋“œ์—์„œ๋Š” name๊ณผ age๊ฐ€ Person ํด๋ž˜์Šค์˜ ํ•„๋“œ๊ฐ€ ๋œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ์ƒ์„ฑ์ž๋Š” constructor๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ํด๋ž˜์Šค๊ฐ€ ์ธ์Šคํ„ด์Šคํ™” ๋  ๋•Œ (= ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ) ์ž๋™์œผ๋กœ ํ˜ธ์ถœ๋˜๋Š” ํŠน๋ณ„ํ•œ ํ•จ์ˆ˜๋ฅผ ์˜๋ฏธํ•œ๋‹ค. this ํ‚ค์›Œ๋“œ๋ฅผ ํ†ตํ•ด ํ•„๋“œ๋ฅผ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ displayInfo()๊ฐ€ ๋ฉ”์„œ๋“œ๊ฐ€ ๋œ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•„๋“œ, ์ƒ์„ฑ์ž, ๋ฉ”์„œ๋“œ ์ˆœ์œผ๋กœ ํด๋ž˜์Šค๋ฅผ ์ž‘์„ฑํ•ด๋‚˜๊ฐ€๋Š” ์—ฐ์Šต์„ ํ•ด์•ผ๊ฒ ๋‹ค.

[ํ•œ ๋ฉ”์„œ๋“œ๊ฐ€ ํ•œ ๊ฐ€์ง€ ๊ธฐ๋Šฅ๋งŒ ๋‹ด๋‹นํ•˜๊ฒŒ ํ•œ๋‹ค]

2์ฃผ์ฐจ์˜ ๊ณผ์ œ์—์„œ๋Š” ํ•˜๋‚˜์˜ ํ•จ์ˆ˜๊ฐ€ ํ•œ ๊ฐ€์ง€ ๋™์ž‘๋งŒ ํ•˜๋„๋ก ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค๋Š” ํ•™์Šต ๋ชฉํ‘œ๋ฅผ ๋ฐ›๊ณ , ํด๋ž˜์Šค ๊ฐ์ฒด๋ฅผ ๋งŒ๋“œ๋Š” ๋ฒ•์„ ์—ฐ์Šตํ•˜๋‹ค๊ฐ€ ํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ๋„ ํ•œ ๊ฐ€์ง€ ๊ธฐ๋Šฅ๋งŒ ๋‹ด๋‹นํ•˜๋„๋ก ๋ถ„๋ฆฌํ•˜๋Š” ๋ฆฌํŒฉํ† ๋ง์„ ์ง„ํ–‰ํ–ˆ์—ˆ๋‹ค. 

์ด๋ฒˆ 3์ฃผ์ฐจ์—๋„ ๋™์ž‘๋“ค์„ ์ตœ๋Œ€ํ•œ ๋ถ„๋ฆฌํ•ด์„œ ๋ฉ”์„œ๋“œ๋ฅผ ๋งŒ๋“œ๋Š” ๊ณผ์ •์„ ๊ฑฐ์ณ์•ผ๊ฒ ๋‹ค.

์•„๋ž˜์™€ ๊ฐ™์ด ์•ˆ๋‚ด ๋ฌธ๊ตฌ ์ถœ๋ ฅ, ์‚ฌ์šฉ์ž ์ž…๋ ฅ ์ฒ˜๋ฆฌ, ์œ ํšจ๊ฐ’ ๊ฒ€์ฆ ๋“ฑ์˜ ์ž‘์—…์ด ํ•œ ํ•จ์ˆ˜์— ํฌํ•จ๋˜์–ด์žˆ์„ ๋•Œ ๊ฐ๊ธฐ ๋‹ค๋ฅธ ํ•จ์ˆ˜๋กœ ๋ถ„๋ฆฌํ•ด๋ณด๋Š” ์—ฐ์Šต์ด ํ•„์š”ํ•˜๋‹ค.

const userInput = () => {
  MissionUtils.Console.readLine("๊ฒฝ์ฃผํ•  ์ž๋™์ฐจ ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜์„ธ์š”(์ด๋ฆ„์€ ์‰ผํ‘œ(,)๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๊ตฌ๋ถ„): ", (input) => {
    const carNames = input.split(",");
    for (int index = 0; index < carNames.length; index++) {
      if (carNames[index].length < 1 || carNames[index].length > 5) {
        throw new Error("[ERROR] ์ž๋™์ฐจ ์ด๋ฆ„์€ 1์ž ์ด์ƒ 5์ž ์ดํ•˜๋งŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.");
      }
    }
    return carNames;
  });
};

 

โ–ผ ๋ถ„๋ฆฌ ์˜ˆ์‹œ

๋”๋ณด๊ธฐ
// ์‚ฌ์šฉ์ž๊ฐ€ ์ž๋™์ฐจ ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜๋„๋ก ์š”์ฒญํ•˜๋Š” ํ•จ์ˆ˜
const getUserInput = () => {
  return MissionUtils.Console.readLine(
    '๊ฒฝ์ฃผํ•  ์ž๋™์ฐจ ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜์„ธ์š”(์ด๋ฆ„์€ ์‰ผํ‘œ(,)๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๊ตฌ๋ถ„): '
  );
};

// ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ์ž๋™์ฐจ ํ•จ์ˆ˜ ๋ฐฐ์—ด๋กœ ์ถ”์ถœ
const carName = (userInput) => {
  return userInput.split(',');
};

// ์ž๋™์ฐจ ์ด๋ฆ„๊ฐ’์ด ์œ ํšจํ•œ์ง€ ํ™•์ธ
const validateCarName = (carName) => {
  if (carName.length < 1 || carName.length > 5) {
    throw new Error('[ERROR] ์ž๋™์ฐจ ์ด๋ฆ„์€ 1์ž ์ด์ƒ 5์ž ์ดํ•˜๋งŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.');
  }
};

// ์‹คํ–‰ ํ•จ์ˆ˜
const getCarNames = (userInput) => {
  const carNamesArray = carName(userInput);
  carNamesArray.forEach(validateCarName);
  return carNamesArray;
};

์œ„์™€ ๊ฐ™์ด ๊ธฐ๋Šฅ๋ณ„๋กœ ํ•จ์ˆ˜๋ฅผ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค. ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์˜ˆ์‹œ๋Š” ๋”ฐ๋กœ ์ž‘์„ฑํ•˜์ง€ ์•Š์•˜๊ณ , ์–ด๋–ป๊ฒŒ ๋‚˜๋ˆ„๋Š”์ง€์— ๋Œ€ํ•ด์„œ๋งŒ ๊ฐ์„ ์žก์•„๋ณด์•˜๋‹ค.

[๋ฉ”์„œ๋“œ๊ฐ€ ํ•œ ๊ฐ€์ง€ ๊ธฐ๋Šฅ์„ ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ธฐ์ค€์„ ์„ธ์šด๋‹ค]

์—ฌ๋Ÿฌ ๋ฉ”์„œ๋“œ์—์„œ ์ค‘๋ณต๋˜๋Š” ์ฝ”๋“œ๊ฐ€ ์žˆ๋‹ค๋ฉด ์ด๋ฅผ ๋ณ„๋„ ๋ฉ”์„œ๋“œ๋กœ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ์„ ๊ณ ๋ คํ•œ๋‹ค.๋ฉ”์„œ๋“œ์˜ ๊ธธ์ด๊ฐ€ ๊ธธ์–ด์ง„๋‹ค๋Š” ๊ฒƒ์€ ์—ฌ๋Ÿฌ ๊ธฐ๋Šฅ์„ ํฌํ•˜ํ•˜๊ณ  ์žˆ์„ ๊ฐ€๋Šฅ์„ฑ์ด ์ปค์ง€๋ฏ€๋กœ 15๋ผ์ธ์ด ๋„˜์ง€ ์•Š๋„๋ก ๊ตฌํ˜„ํ•˜๋Š” ์—ฐ์Šต์„ ํ•˜๋ฉด ์˜์‹์ ์œผ๋กœ ๋ถ„๋ฆฌํ•˜๋Š” ์—ฐ์Šต์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

"15๋ผ์ธ์ด ๋„˜์ง€ ์•Š๊ฒŒ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์ž" ์™€ ๊ฐ™์€ ๊ธฐ์ค€์„ ์„ธ์šฐ๋ฉด ๋  ๊ฒƒ ๊ฐ™๋‹ค.

[ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ์ด์œ ์— ๋Œ€ํ•ด ๋ณธ์ธ์˜ ๊ฒฝํ—˜์„ ํ† ๋Œ€๋กœ ์ •๋ฆฌํ•ด๋ณธ๋‹ค]

ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ๊ธฐ๋Šฅ์˜ ์ •ํ™•์„ฑ์„ ์ ๊ฒ€ํ•จ์„ ๋„˜์–ด ์ฝ”๋“œ์˜ ์ฆ‰๊ฐ์ ์ธ ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค. ํ…Œ์ŠคํŠธ ์ž‘์„ฑ ๊ณผ์ •์„ ํ†ตํ•ด ๊ตฌํ˜„ํ•œ ๊ธฐ๋Šฅ์˜ ๋ฌธ์ œ๋ฅผ ๋น ๋ฅด๊ฒŒ ๋ฐœ๊ฒฌํ•  ์ˆ˜ ์žˆ์„ ๋ฟŒ๋‚œ ์•„๋‹ˆ๋ผ, ์ฝ”๋“œ์˜ ๊ตฌ์กฐ์™€ ์˜๋„๋ฅผ ๋ช…ํ™•ํžˆ ์ดํ•ดํ•˜๋Š”๋ฐ๋„ ๋„์›€์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค. 

๊ทธ๋Ÿฌํ•œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ์˜ ์žฅ์ ์„ ๋‚ด ๊ฒฝํ—˜์„ ํ† ๋Œ€๋กœ ๊ฐ€์žฅ ๊ณต๊ฐํ•˜๋Š” ์ด์œ ๋ฅผ ์ž‘์„ฑํ•ด๋ณด๋Š” ๊ฒƒ์ด๋‹ค.

[์ฒ˜์Œ๋ถ€ํ„ฐ ํฐ ๋‹จ์œ„์˜ ํ…Œ์ŠคํŠธ๋ฅผ ๋งŒ๋“ค์ง€ ์•Š๋Š”๋‹ค]

ํ…Œ์ŠคํŠธ์˜ ํ•ต์‹ฌ ๋ชฉ์  ์ค‘ ํ•˜๋‚˜๋Š” ์ฝ”๋“œ์— ๋Œ€ํ•ด ๋น ๋ฅด๊ณ  ์ž์ฃผ ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›๋Š” ๊ฒƒ์ด๋‹ค. ์ฒ˜์Œ๋ถ€ํ„ฐ ํฐ ๋‹จ์œ„์˜ ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•˜๊ฒŒ ๋˜๋ฉด, ์ž‘์„ฑํ•œ ์ฝ”๋“œ์˜ ๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฌํ•˜๊ธฐ๊นŒ์ง€ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฐ๋‹ค๊ณ  ํ•œ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์ตœ๋Œ€ํ•œ ์ž‘์€ ๋‹จ์œ„๋กœ ๋‚˜๋ˆ ์„œ ํ…Œ์ŠคํŠธ๋ฅผ ๋งŒ๋“ค์–ด๊ฐ€๋Š” ๊ฒƒ์ด ํšจ๊ณผ์ ์ด๋ผ๊ณ  ํ•œ๋‹ค.

์˜ˆ์‹œ

ํฐ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ

  • ์ž๋™์ฐจ ๊ฒฝ์ฃผ ๊ฒŒ์ž„์„ ์‹œ์ž‘ํ•˜์—ฌ, ์‚ฌ์šฉ์ž๊ฐ€ ์ด๋ฆ„๊ณผ ์ง„ํ–‰ ํšŸ์ˆ˜๋ฅผ ์ž…๋ ฅํ•˜๊ณ , ๊ฒŒ์ž„์„ ์ง„ํ–‰ํ•œ ํ›„ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•œ๋‹ค.

์ž‘์€ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ

  • ๋ฌด์ž‘์œ„ ๊ฐ’์ด 4 ์ด์ƒ์ด๋ฉด ์ž๋™์ฐจ๊ฐ€ ์ „์ง„ํ•œ๋‹ค.
  • ๋ฌด์ž‘์œ„ ๊ฐ’์ด 3 ์ดํ•˜์ด๋ฉด ์ž๋™์ฐจ๊ฐ€ ์ „์ง„ํ•˜์ง€ ์•Š๋Š”๋‹ค.

[JavaScript์—์„œ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“œ๋Š” ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์„ ์ดํ•ดํ•˜๊ณ  ์‚ฌ์šฉํ•œ๋‹ค]

JavaScript์—์„œ๋Š” ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ• ์ด์™ธ์—๋„ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“œ๋Š” ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์ด ์กด์žฌํ•œ๋‹ค.

๋‹ค์–‘ํ•œ ๊ฐ์ฒด ์ƒ์„ฑ ๋ฐฉ์‹์„ ์ตํžˆ๋ฉด ์œ ์—ฐํ•˜๊ฒŒ ์ฝ”๋“œ๋ฅผ ์„ค๊ณ„ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋‚˜์—๊ฒŒ ๊ฐ€์žฅ ํ•„์š”ํ•œ ํ”ผ๋“œ๋ฐฑ์ด์—ˆ์„์ง€๋„ ๋ชจ๋ฅธ๋‹ค. ์—ญ์‹œ ์œ ์—ฐํ•˜๊ฒŒ ์ฝ”๋“œ๋ฅผ ์„ค๊ณ„ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์„ ๊ณต๋ถ€ํ•ด๋‚˜๊ฐ€๋Š” ๊ฒƒ์ด ํ•„์ˆ˜์ ์ธ ๊ฒƒ ๊ฐ™๋‹ค.

๋‘ ๊ฐ€์ง€ ์ฐธ๊ณ ๊ธ€์„ ํ™•์ธํ•˜๊ณ  ์ฝ”๋“œ๋ฅผ ์„ค๊ณ„ํ•ด๋‚˜๊ฐ€์•ผ๊ฒ ๋‹ค. ํ˜„์žฌ์˜ ๊ณ„ํš์€ ๋ฆฌ๋“œ๋ฏธ ํŒŒ์ผ ์ž‘์„ฑ -> ๊ฐ์ฒด ์ƒ์„ฑ ๋ฐฉ๋ฒ• ๊ณต๋ถ€ -> ๊ธฐ๋Šฅ ๊ตฌํ˜„ ์ˆœ์„œ์ด๋‹ค!

โ–ผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ์ฒด ๋งŒ๋“œ๋Š” ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•

 

์ค‘๊ฐ„ KPT ํšŒ๊ณ 

2์ฃผ์ฐจ์—๋Š” ํ•™์Šต ๋ชฉํ‘œ์— ๋งž์ถฐ ๊ณผ์ œ๋ฅผ ์™„์„ฑํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ–ˆ๋‹ค. ์ฒ˜์Œ ๊ธฐ๋Šฅ์„ ๋ดค์„ ๋•Œ 1์ฃผ์ฐจ๋ณด๋‹ค ๋” ์–ด๋ ค์›Œ ๋ณด์˜€๊ณ , ์‹œํ—˜ ๊ธฐ๊ฐ„๊ณผ ๊ฒน์ณ ์‹œ๊ฐ„์  ์—ฌ์œ ๋„ ๋ถ€์กฑํ–ˆ๋‹ค. ๊ทธ๋ž˜์„œ ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผํ•˜๋Š” ๊ฒƒ์„ ๊ฐ€์žฅ ํฐ ๋ชฉํ‘œ๋กœ ์‚ผ์•˜๊ณ , ์˜ˆ์™ธ ์‚ฌํ•ญ๊นŒ์ง€ ๊นŠ์ด ์ƒ๊ฐํ•˜์ง€ ๋ชปํ•œ ์ฑ„ ๊ธฐ๋Šฅ ๊ตฌํ˜„์—๋งŒ ์ง‘์ค‘ํ–ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค.

๋‘ ๋ฒˆ์งธ ํ•™์Šต ๋ชฉํ‘œ๋Š” ํ…Œ์ŠคํŠธ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์šฐ๊ณ , ํ”„๋กœ๊ทธ๋žจ์ด ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜๋Š”์ง€ ํ…Œ์ŠคํŠธํ•ด๋ณด๋Š” ๊ฒƒ์ด์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋งˆ์ง€๋ง‰ ๋‚ ๊นŒ์ง€ ํ•จ์ˆ˜ ๋ถ„๋ฆฌ์™€ ๊ธฐ๋Šฅ ๊ตฌํ˜„์— ์ง‘์ค‘ํ•˜๋‹ค ๋ณด๋‹ˆ ํ…Œ์ŠคํŠธ ๋„๊ตฌ ์‚ฌ์šฉ์ด ์ต์ˆ™ํ•˜์ง€ ์•Š์•„์„œ, ๊ธฐ๋ณธ์ ์ธ ๋ฌธ๋ฒ•์œผ๋กœ ๊ฐ„๋‹จํ•œ ๋ถ€๋ถ„์— ๋Œ€ํ•ด์„œ๋งŒ ๋น ๋ฅด๊ฒŒ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด๋ณผ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

๋˜ํ•œ 1์ฃผ์ฐจ์™€ ๋‹ฌ๋ผ์ง„ ์ ์ด๋ผ๋ฉด, ์ด๋ฒˆ์—๋Š” 6๊ธฐ ๋ถ„๋“ค์ด ๋งŒ๋“  ์›น ์„œ๋น„์Šค CoReA: https://code-review-area.com/intro ์‚ฌ์šฉํ•ด ๋งž๋ฆฌ๋ทฐ๋ฅผ ๋ฐ›์„ ์‚ฌ๋žŒ์„ ๋งค์นญ๋ฐ›์€ ๊ฒƒ์ด๋‹ค ใ…Žใ…Ž. ๋ฆฌ๋ทฐํ•ด์ฃผ์‹  ๋ถ„๋“ค๊ป˜ ์ •๋ง ๊ฐ์‚ฌํ–ˆ๊ณ , ๋‚˜๋„ ๋งค์นญ๋œ ๋ถ„๋“ค๊ป˜ ๋ฆฌ๋ทฐ๋ฅผ ํ•ด๋“œ๋ฆฌ๊ณ  ์‹ถ์—ˆ์ง€๋งŒ… ๋‚˜์—๊ฒŒ ๋งค์นญ๋œ ๋ถ„๋“ค์€ ์ •๋ง ๋Œ€๋‹จํ•œ ๋ถ„๋“ค์ด์—ˆ๋‹ค. ์„ธ ๋ถ„ ๋ชจ๋‘ ๋ฆฌ๋ทฐํ•ด์ฃผ์‹  ๋ถ„์ด 5๋ถ„์ด ๋„˜์—ˆ๊ณ , ์ฝ”๋“œ๋„ ๊น”๋”ํ–ˆ๋‹ค. ๋‚ด ์ฝ”๋“œ์—๋„ ๋ถ€์กฑํ•œ ์ ์ด ๋งŽ๋‹ค๊ณ  ๋А๋ผ๋Š” ๋‚˜๋Š” ๋‹ค๋ฅธ ๋ถ„์˜ ์ฝ”๋“œ๋ฅผ ์ฝ๊ณ  ๋ฆฌ๋ทฐํ•  ์—ญ๋Ÿ‰์ด ๋ถ€์กฑํ•˜๋‹ค๊ณ  ๋А๊ผˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋ฆฌ๋ทฐ๋ฅผ ๋‹ฌ์•„๋“œ๋ฆฌ์ง€ ๋ชปํ•ด ์ฃ„์†กํ–ˆ์ง€๋งŒ, ๊ทธ ๋•๋ถ„์— ์ข‹์€ ์ฝ”๋“œ๋ฅผ ์ฝ์–ด๋ณผ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

๋˜ํ•œ 6๊ธฐ ์„ ๋ฐฐ๋“ค์˜ ์„œ๋น„์Šค๊ฐ€ ๋„ˆ๋ฌด ์ž˜ ๋งŒ๋“ค์–ด์ ธ์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ ์–ด๋ ค์›€์ด ์—†์—ˆ๊ณ , ๋•๋ถ„์— 2์ฃผ์ฐจ์—์„œ ๋‚˜์˜ ๋ถ€์กฑํ•œ ์ ์„ ๋ฆฌ๋ทฐ์–ด ๋ถ„๋“ค์„ ํ†ตํ•ด ์•Œ๊ฒŒ ๋˜์–ด ํฐ ๋„์›€์ด ๋˜์—ˆ๋‹ค. ๋‚˜์ฒ˜๋Ÿผ ์ปค๋ฎค๋‹ˆํ‹ฐ ์‚ฌ์šฉ์— ์ต์ˆ™ํ•˜์ง€ ์•Š๊ณ  ๋ฆฌ๋ทฐ๋Š” ๋ฐ›์•„๋ณด๊ณ  ์‹ถ์€ ์ดˆ๋ณด์ž๋“ค์€ ํ•œ๋ฒˆ ์ฐธ๊ฐ€ํ•ด๋ด๋„ ๊ดœ์ฐฎ์€ ์„œ๋น„์Šค์ธ ๊ฒƒ ๊ฐ™๋‹ค ใ…Žใ…Ž

Keep (์œ ์ง€ํ•˜๋ฉด ์ข‹์€ ์ )

์šฐ์„  ํ•จ์ˆ˜์™€ ๋ฉ”์„œ๋“œ ๋ถ„๋ฆฌ๋Š” ์ตœ๋Œ€ํ•œ ์ž‘๊ฒŒ ๋งŒ๋“  ๊ฒƒ ๊ฐ™์•„์„œ 3์ฃผ์ฐจ์—๋„ ์ž˜ ์ ์šฉํ•˜์—ฌ ๊ธฐ๋Šฅ์— ๋”ฐ๋ผ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค. ๋ฆฌ๋ทฐ์–ด๋ถ„๋“ค๋„ ํ•จ์ˆ˜๋ฅผ ์ตœ๋Œ€ํ•œ ๋ถ„๋ฆฌํ•œ ๋ถ€๋ถ„์— ๋Œ€ํ•ด์„œ ์นญ์ฐฌํ•ด์ฃผ์…”์„œ ๊ธฐ๋ถ„์ด ์ข‹์•˜๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‚ด ๋ชฉํ‘œ์˜€๋˜ ์ž‘์€ ํ•จ์ˆ˜๋กœ ์ž˜ ๋ถ„๋ฆฌํ•˜๊ณ ์ž ํ•œ ์˜๋„๊ฐ€ ๋“œ๋Ÿฌ๋‚œ ๊ฒƒ ๊ฐ™์•„ ๋ฟŒ๋“ฏํ–ˆ๋‹ค.

๋‚จ๊ฒจ์ฃผ์‹  ์ฝ”๋ฉ˜ํŠธ

๋”ฐ๋œปํ•œ ๋ฆฌ๋ทฐ์–ด๋ถ„๋“ค.. ๊ทธ๋ฆฌ๊ณ  ์ด ๋ถ„๋“ค์˜ ๋ฆฌ๋ทฐ๋„ ๋‹ฌ์•„๋“œ๋ฆฌ๊ณ  ์‹ถ์–ด์„œ ๋“ค์–ด๊ฐ€๋ณด๋‹ˆ ๋งค์šฐ ๊ณ ์ˆ˜์…จ๋˜ ..

๋จธ์“ฑํ•ดํ•˜๋ฉฐ ์ฝ”๋“œ๋งŒ ์ฝ๊ณ  ๋ฐœ์„ ๋บ๋˜..

๊ทธ๋ฆฌ๊ณ  ์ปค๋ฐ‹ํ•  ๋•Œ ์ˆ˜์ •๋œ ํŒŒ์ผ๋ช…์„ <scope> ๋ถ€๋ถ„์— ํ•จ๊ป˜ ์ž…๋ ฅํ•˜๋‹ˆ ์•Œ์•„๋ณด๊ธฐ ํŽธํ•œ ์ปค๋ฐ‹์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์—ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค.

์ด๋ ‡๊ฒŒ ๊ธฐ๋Šฅ ์ถ”๊ฐ€ ์ปค๋ฐ‹์—  feat์„ ์“ฐ๊ณ  ๊ด„ํ˜ธ ์•ˆ์— ํŒŒ์ผ ๋ช…์„ ์ž…๋ ฅํ•˜๋‹ˆ ํ›จ์”ฌ ์•Œ์•„๋ณด๊ธฐ ์‰ฌ์›Œ์ง„ ๊ฒƒ ๊ฐ™๋‹ค. ์ด ๋‘๊ฐ€์ง€๋Š” 3์ฃผ์ฐจ ์ฝ”๋“œ ์ž‘์„ฑ์—์„œ๋„ ๊ฐ€์ ธ๊ฐ€์•ผ ํ•  ๋ถ€๋ถ„์ธ ๊ฒƒ ๊ฐ™๋‹ค.

 Problem (๊ณ ์ณ์•ผํ•  ๋ฌธ์ œ์ )

๋Š˜ ๋‚˜์˜ ํ–‰๋™์—์„œ ๊ฐ€์žฅ ์•„์‰ฌ์šด ์ ์€ ๊ฒฐ๊ตญ ๊ผผ๊ผผํ•˜์ง€ ๋ชปํ–ˆ๋˜ ๋ถ€๋ถ„์ธ ๊ฒƒ ๊ฐ™๋‹ค. ๋จธ๋ฆฌ๋ฅผ ๋งŽ์ด ์ผ๊ฑฐ๋‚˜ ํž˜๋“ค๋‹ค๊ณ  ํŒ๋‹จ๋˜๋ฉด ๋น ๋ฅด๊ฒŒ ๋จธ๋ฆฌ๋ฅผ ์‹ํ˜€์ฃผ๊ธฐ ์œ„ํ•ด ๊ผผ๊ผผํ•จ์˜ ๋Šฅ๋ ฅ์ด ๊ธ‰๊ฒฉํžˆ ๋‚ฎ์•„์ง„๋‹ค. ์ฒ ์ž๋ฅผ ํ‹€๋ฆฌ๊ณ , ์ƒ์ˆ˜๋ฅผ ๋„ฃ๋Š” ํŒŒ์ผ์— ํ•จ์ˆ˜๋ฅผ ๋งˆ์ง€๋ง‰์— ์˜ฎ๊ฒจ๋‘๋Š” ๋“ฑ ์ƒ๊ฐ์ด ์งง์•„์ง€๋Š” ์ˆœ๊ฐ„์„ ์ตœ๋Œ€ํ•œ ์ค„์—ฌ์•ผ ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‚ด๊ฐ€ ์ง์ ‘ ์“ด ์ฝ”๋“œ๋‹ˆ ๋‘๋ฒˆ, ์„ธ๋ฒˆ ์ œ์ถœํ•˜๊ธฐ ์ „์— ํ™•์ธํ•˜๋Š” ์Šต๊ด€์ด ํ•„์š”ํ•œ ๊ฒƒ ๊ฐ™๋‹ค.

์•„๋งˆ 2์ฃผ์ฐจ๋Š” ์‹œ๊ฐ„์ด ์งง์€ ๋งŒํผ ๋นจ๋ฆฌ ํ•ด์•ผ ํ•œ๋‹ค๋Š” ์ƒ๊ฐ์— ์‹ค์ˆ˜ํ•œ ๋ถ€๋ถ„์ด ๋งŽ์€ ๊ฒƒ ๊ฐ™๋‹ค. ํ•˜์ง€๋งŒ ์‹œ๊ฐ„์ด ์ด‰๋ฐ•ํ•œ ์ˆœ๊ฐ„๋“ค์€ ์‚ด๋ฉด์„œ ๋งŽ์ด ์žˆ์„ ๊ฒƒ์ด๊ณ  ๊ทธ๋•Œ๋งˆ๋‹ค ์‹ค์ˆ˜ํ•  ์ˆ˜๋Š” ์—†๋Š” ๋…ธ๋ฆ‡์ด๋‹ˆ ์ž์ฃผ ํ™•์ธํ•˜๋Š” ์Šต๊ด€์„ ๊ธฐ๋ฅด๋Š” ๊ฒƒ์€ ๋งค์šฐ ์ค‘์š”ํ•  ๊ฒƒ ๊ฐ™๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ฒ ์ž๊ฐ€ ํ‹€๋ฆฌ๋Š” ๊ฒƒ์€ ๋ฆฌ๋ทฐ์–ด ๋ถ„์ด ์ถ”์ฒœํ•ด์ฃผ์‹  'Code Spell Checker'๋ผ๋Š” ํ™•์žฅ์ž๋ฅผ ์‚ฌ์šฉํ•ด๋ณด๋‹ˆ ์ฒ ์ž๋Š” ์ž˜ ์žก์„ ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์•„์„œ ๋„ˆ๋ฌด ๊ฐ์‚ฌํ–ˆ๋‹ค. 

๊ทธ๋ฆฌ๊ณ  ํŒŒ์ผ๋ช…์˜ ์—ญํ• ์— ๋งž์ถฐ์„œ ํ•จ์ˆ˜๋ฅผ ์ž…๋ ฅํ•˜๊ณ , ์Šคํƒ€์ผ ๊ฐ€์ด๋“œ์— ๋งž์ถฐ์„œ ์ž‘์„ฑํ•˜๋„๋ก ๋…ธ๋ ฅํ•ด์•ผ ํ•˜๋Š” ์ ์ด ํ•„์š”ํ•˜๋‹ค.

Try (Problem์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ณด์™„ํ•˜์—ฌ ์ƒˆ๋กœ ์‹œ๋„ํ•ด๋ณผ ์ )

 2์ฃผ์ฐจ์— ๋””๋ฒ„๊ฑฐ ๊ณผ์ •์„ ์ž˜ ํ™œ์šฉํ•˜์ง€ ๋ชปํ•ด์„œ ์•„์‰ฌ์›€์ด ๋‚จ์•˜๋‹ค. 3์ฃผ์ฐจ์—๋Š” 2์ฃผ์ฐจ์˜ Try์ธ ๋””๋ฒ„๊ฑฐ ๊ณผ์ •์„ ์ ๊ทน์ ์œผ๋กœ ํ™œ์šฉํ•ด๋ณด๊ณ , ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž˜ ์ž‘์„ฑํ•˜์—ฌ ๋‹จ์œ„๋ณ„๋กœ ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด๋ณผ ์ƒ๊ฐ์ด๋‹ค. ์ด๋ ‡๊ฒŒ ๋‹จ์œ„๋ณ„๋กœ ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ๊ธฐ๋Šฅ๋ณ„๋กœ ํ•จ์ˆ˜๋ฅผ ์ž‘๊ฒŒ ๋ถ„๋ฆฌํ•˜๋ฉด ํ•˜๋‚˜์˜ ํ•จ์ˆ˜์— ๋Œ€ํ•ด ์—ฌ๋Ÿฌ ๋ฒˆ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์„œ, ์ด์ „์— ๋ถ€์กฑํ–ˆ๋˜ ๊ผผ๊ผผํ•จ์„ ๋ณด์™„ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐ๋œ๋‹ค.

๋˜ํ•œ ๋ฆฌ๋ทฐ์–ด๋ถ„์ด ์ถ”์ฒœํ•ด์ฃผ์‹  ์ฝ”๋“œ ์•ˆ์ •์„ฑ ๋ฐฉ๋ฒ•๋“ค์„ ์ ์šฉํ•ด๋ณผ ๊ฒƒ์ด๋‹ค. private ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•ด์„œ ํด๋ž˜์Šค ์™ธ๋ถ€์—์„œ ์ง์ ‘์ ์œผ๋กœ ์ ‘๊ทผํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•๊ณผ ์Šคํƒ€์ผ ๊ฐ€์ด๋“œ์— ๋งž์ถฐ for๋ฐ˜๋ณต๋ฌธ ๋Œ€์‹  forEach, map์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐ์—ด์„ ํ™•์ธํ•˜๋Š” ๊ณผ์ •์„ ๊ฑฐ์ณ์•ผํ•  ๊ฒƒ ๊ฐ™๋‹ค.

์œ ์ €์—๊ฒŒ ์ž…๋ ฅ๋ฐ›๋Š” ๊ฐ’์„ `Constants.js`์™€ ๊ฐ™์€ ํŒŒ์ผ์—์„œ ๊ด€๋ฆฌํ•˜๋ฉด ์œ ์ง€๊ด€๋ฆฌ์„ฑ์ด ๋†’์•„์ง„๋‹ค๋Š” ๋ฆฌ๋ทฐ๋ฅผ ๋ฐ›๊ณ , ์ ๊ทน์ ์œผ๋กœ ์ˆ˜์šฉํ•  ์ƒ๊ฐ์ด๋‹ค! ์œ ์ง€๊ด€๋ฆฌ์„ฑ์ด ๋†’์•„์ง€๋Š” ์ด์œ ์— ๋Œ€ํ•ด ์ฐพ์•„๋ณด๋‹ˆ, ์ฝ”๋“œ ๊ฐ€๋…์„ฑ์ด ํ–ฅ์ƒ๋˜๊ณ  ์ค‘๋ณต ์ฝ”๋“œ ๋ฐฉ์ง€๊ฐ€ ๊ฐ€๋Šฅํ•ด์ง€๋ฉฐ, ์œ ์ € ์ž…๋ ฅ ๊ด€๋ จ ๊ฐ’์ด ํ•œ ํŒŒ์ผ์— ๋ชจ์—ฌ ์žˆ์–ด ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•  ๋•Œ ํ•œ ๊ณณ๋งŒ ์ˆ˜์ •ํ•˜๋ฉด ๋œ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค. 

์ƒ๊ฐํ•ด๋ณด๋‹ˆ, ํ•˜๋‚˜์˜ ํŒŒ์ผ์— ๋ชจ๋“  ๊ฐ’๋“ค์ด ๋ชจ์—ฌ ์žˆ์„ ๋•Œ, ํŠน์ • ๊ฐ’์„ ์ˆ˜์ •ํ•˜๋ฉด์„œ ๋‹ค๋ฅธ ๊ฐ’๋“ค๋„ ํ•˜๋‚˜์”ฉ ๋ชจ๋‘ ๋ณ€๊ฒฝํ•ด์ค˜์•ผ ํ–ˆ๋˜ ๊ฒฝํ—˜์ด ์žˆ๋‹ค. (1์ฃผ์ฐจ) ์ด๋ฅผ ํ†ตํ•ด, ํŒŒ์ผ์„ ๋‚˜๋ˆ  ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์ด ํ™•์‹คํžˆ ์ฝ”๋“œ ๊ด€๋ฆฌ์— ์ˆ˜์›”ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ๋А๊ผˆ๋‹ค.

 

์ตœ์ข… Todo ์ •๋ฆฌ

- [ ] ํ•˜๋“œ ์ฝ”๋”ฉ ํ•˜์ง€ ์•Š๊ธฐ ์œ„ํ•ด ๊ตฌ๊ธ€์— “javascript const” ๊ฒ€์ƒ‰ํ•˜์—ฌ ์ž‘์„ฑ๋ฒ• ์•Œ์•„๋ณด๊ธฐ
- [ ] ๋ฉ”์„œ๋“œ๊ฐ€ ํ•œ ๊ฐ€์ง€ ๊ธฐ๋Šฅ์„ ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ธฐ์ค€ ์„ธ์šฐ๊ธฐ
- [ ] ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ์ด์œ ์— ๋Œ€ํ•ด ์ •๋ฆฌ
- [ ] ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋‹ค์–‘ํ•œ ๊ฐ์ฒด ์ƒ์„ฑ ๋ฐฉ๋ฒ• ์ตํžˆ๊ธฐ