๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์ „์ฒด ๊ธ€

(97)
[Web] Webpack ๐Ÿ“˜ webpack์€ ๋ญ˜๊นŒ? webpack ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ํ™•์ธํ•ด๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‚˜์™€์žˆ๋‹ค. At its core, webpack is a static module bundler for modern JavaScript applications. When webpack processes your application, it internally builds a dependency graph from one or more entry points and then combines every module your project needs into one or more bundles, which are static assets to serve your content from. ํ•œ๊ตญ์–ด๋กœ ๋ฒˆ์—ญํ•œ๋‹ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. webpack..
[Algorithm] ๊ธฐ์ง€๊ตญ์„ค์น˜ ๐Ÿ“‹ ๋ฌธ์ œ N๊ฐœ์˜ ์•„ํŒŒํŠธ๊ฐ€ ์ผ๋ ฌ๋กœ ์ญ‰ ๋Š˜์–ด์„œ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์ค‘์—์„œ ์ผ๋ถ€ ์•„ํŒŒํŠธ ์˜ฅ์ƒ์—๋Š” 4g ๊ธฐ์ง€๊ตญ์ด ์„ค์น˜๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ์ˆ ์ด ๋ฐœ์ „ํ•ด 5g ์ˆ˜์š”๊ฐ€ ๋†’์•„์ ธ 4g ๊ธฐ์ง€๊ตญ์„ 5g ๊ธฐ์ง€๊ตญ์œผ๋กœ ๋ฐ”๊พธ๋ ค ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ 5g ๊ธฐ์ง€๊ตญ์€ 4g ๊ธฐ์ง€๊ตญ๋ณด๋‹ค ์ „๋‹ฌ ๋ฒ”์œ„๊ฐ€ ์ข์•„, 4g ๊ธฐ์ง€๊ตญ์„ 5g ๊ธฐ์ง€๊ตญ์œผ๋กœ ๋ฐ”๊พธ๋ฉด ์–ด๋–ค ์•„ํŒŒํŠธ์—๋Š” ์ „ํŒŒ๊ฐ€ ๋„๋‹ฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 11๊ฐœ์˜ ์•„ํŒŒํŠธ๊ฐ€ ์ญ‰ ๋Š˜์–ด์„œ ์žˆ๊ณ , [4, 11] ๋ฒˆ์งธ ์•„ํŒŒํŠธ ์˜ฅ์ƒ์—๋Š” 4g ๊ธฐ์ง€๊ตญ์ด ์„ค์น˜๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์ด 4g ๊ธฐ์ง€๊ตญ์ด ์ „ํŒŒ ๋„๋‹ฌ ๊ฑฐ๋ฆฌ๊ฐ€ 1์ธ 5g ๊ธฐ์ง€๊ตญ์œผ๋กœ ๋ฐ”๋€” ๊ฒฝ์šฐ ๋ชจ๋“  ์•„ํŒŒํŠธ์— ์ „ํŒŒ๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. (์ „ํŒŒ์˜ ๋„๋‹ฌ ๊ฑฐ๋ฆฌ๊ฐ€ W์ผ ๋•, ๊ธฐ์ง€๊ตญ์ด ์„ค์น˜๋œ ์•„ํŒŒํŠธ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ „ํŒŒ๋ฅผ ์–‘์ชฝ์œผ๋กœ W๋งŒํผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.) ์ดˆ๊ธฐ์—, 1, 2, 6, 7,..
[Algorithm] ๊ฐ€์žฅ ๊ธด ํŒฐ๋ฆฐ๋“œ๋กฌ ๐Ÿ“‹ ๋ฌธ์ œ ์•ž๋’ค๋ฅผ ๋’ค์ง‘์–ด๋„ ๋˜‘๊ฐ™์€ ๋ฌธ์ž์—ด์„ ํŒฐ๋ฆฐ๋“œ๋กฌ(palindrome)์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์ž์—ด s๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ, s์˜ ๋ถ€๋ถ„๋ฌธ์ž์—ด(Substring)์ค‘ ๊ฐ€์žฅ ๊ธด ํŒฐ๋ฆฐ๋“œ๋กฌ์˜ ๊ธธ์ด๋ฅผ return ํ•˜๋Š” solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด ์ฃผ์„ธ์š”. ์˜ˆ๋ฅผ๋“ค๋ฉด, ๋ฌธ์ž์—ด s๊ฐ€ "abcdcba"์ด๋ฉด 7์„ returnํ•˜๊ณ  "abacde"์ด๋ฉด 3์„ returnํ•ฉ๋‹ˆ๋‹ค. ์ œํ•œ์‚ฌํ•ญ ๋ฌธ์ž์—ด s์˜ ๊ธธ์ด : 2,500 ์ดํ•˜์˜ ์ž์—ฐ์ˆ˜ ๋ฌธ์ž์—ด s๋Š” ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž๋กœ๋งŒ ๊ตฌ์„ฑ ์ž…์ถœ๋ ฅ ์˜ˆ "abcdcba" 7 "abacde" 3 โœ๏ธ ํ’€์ด ์–ด๋–ค ์‹์œผ๋กœ ํ’€์–ด์•ผํ• ์ง€ ์ •๋ง ๊ณ ๋ฏผ์„ ๋งŽ์ด ํ–ˆ๋‹ค. ์ฒ˜์Œ ์„ ํƒํ•œ ๋ฐฉ๋ฒ•์€ ์ด์ค‘ for๋ฌธ์„ ๋Œ๋ ค์„œ ์•ŒํŒŒ๋ฒณ์ด ๊ฐ™์€์ง€ ์ด์ฐจ์› ๋ฐฐ์—ด์— ํ‘œ์‹œํ•˜๊ณ  i๋Š” ์ž‘์•„์ง€๋Š” ๋ฐฉํ–ฅ์œผ๋กœ, j๋Š” ์ปค์ง€๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๋ฆฌ๋ฉด์„œ ์ฒดํฌํ•˜๋ฉฐ ๋”ํ•ด๊ฐ€๋Š” ๋ฐฉ..
[JavaScript] ์‹คํ–‰์ปจํ…์ŠคํŠธ ์‹คํ–‰์ปจํ…์ŠคํŠธ๋ฅผ ๊ณต๋ถ€ํ•˜๋ฉด์„œ ์‹คํ–‰์ปจํ…์ŠคํŠธ, ํ™˜๊ฒฝ๋ ˆ์ฝ”๋“œ, ๋ ‰์‹œ์ปฌํ™˜๊ฒฝ ๋“ฑ์˜ ๊ด€๊ณ„๊ฐ€ ๊ต‰์žฅํžˆ ๋ณต์žกํ•˜๊ฒŒ ์–ฝํ˜€์žˆ์Œ์„ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‹ค ๋ฌธ๋“ ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด์˜ ๊ฒฝ์šฐ์— ์‹คํ–‰์ปจํ…์ŠคํŠธ๋Š” ์–ด๋–ค์‹์œผ๋กœ ๋™์ž‘ํ•˜๋Š”์ง€๊ฐ€ ๊ถ๊ธˆํ•ด์กŒ๋‹ค. ์šฐ์„  ์‹คํ–‰์ปจํ…์ŠคํŠธ๋ฅผ ๊ณต๋ถ€ํ•˜๋ฉด์„œ ์•Œ๊ฒŒ ๋œ ๋‚ด์šฉ๋“ค์„ ์ •๋ฆฌํ•ด ๋ณด๋ ค๊ณ  ํ•œ๋‹ค. โ‰๏ธ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋™์ž‘์›๋ฆฌ๋ฅผ ๋‹ด๋Š” ํ•ต์‹ฌ ๊ฐœ๋…์œผ๋กœ ๊ฐ„๋‹จํžˆ ๋งํ•ด์„œ ์ฝ”๋“œ์˜์‹คํ–‰ํ™˜๊ฒฝ์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์‹คํ–‰์ปจํ…์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์ฝ”๋“œ์—๋Š” ๋„ค๊ฐ€์ง€๊ฐ€ ์กด์žฌํ•œ๋‹ค. 1. ์ „์—ญ ์ฝ”๋“œ: ์ „์—ญ์— ์กด์žฌํ•˜๋Š” ์ฝ”๋“œ 2. ํ•จ์ˆ˜ ์ฝ”๋“œ: ํ•จ์ˆ˜ ๋‚ด๋ถ€์— ์กด์žฌํ•˜๋Š” ์ฝ”๋“œ 3. eval ์ฝ”๋“œ: eval ํ•จ์ˆ˜์˜ ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋˜์–ด ์‹คํ–‰๋˜๋Š” ์ฝ”๋“œ 4. ๋ชจ๋“ˆ ์ฝ”๋“œ: ๋ชจ๋“ˆ ๋‚ด๋ถ€์— ์กด์žฌํ•˜๋Š” ์ฝ”๋“œ ๊ฐ€์žฅ ๋จผ์ € ์‹คํ–‰ ์ปจํ…์ŠคํŠธ ์Šคํ…์— ์ „์—ญ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ ์ƒ์„ฑ๋˜๊ณ , ์ „์—ญ ๋ ‰์‹œ์ปฌํ™˜๊ฒฝ..
[Algorithm] ๋‹จ์–ด๋ณ€ํ™˜ ๐Ÿ“‹ ๋ฌธ์ œ ๋‘ ๊ฐœ์˜ ๋‹จ์–ด begin, target๊ณผ ๋‹จ์–ด์˜ ์ง‘ํ•ฉ words๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜์™€ ๊ฐ™์€ ๊ทœ์น™์„ ์ด์šฉํ•˜์—ฌ begin์—์„œ target์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฐ€์žฅ ์งง์€ ๋ณ€ํ™˜ ๊ณผ์ •์„ ์ฐพ์œผ๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. 1. ํ•œ ๋ฒˆ์— ํ•œ ๊ฐœ์˜ ์•ŒํŒŒ๋ฒณ๋งŒ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 2. words์— ์žˆ๋Š” ๋‹จ์–ด๋กœ๋งŒ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด begin์ด "hit", target๊ฐ€ "cog", words๊ฐ€ ["hot","dot","dog","lot","log","cog"]๋ผ๋ฉด "hit" -> "hot" -> "dot" -> "dog" -> "cog"์™€ ๊ฐ™์ด 4๋‹จ๊ณ„๋ฅผ ๊ฑฐ์ณ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‘ ๊ฐœ์˜ ๋‹จ์–ด begin, target๊ณผ ๋‹จ์–ด์˜ ์ง‘ํ•ฉ words๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ์ตœ์†Œ ๋ช‡ ๋‹จ๊ณ„์˜ ๊ณผ์ •์„ ๊ฑฐ์ณ begin์„ target์œผ๋กœ ..
[HTML] ์›น ์ ‘๊ทผ์„ฑ ๋ฐ WAI-ARIA ๐ŸŒ ์›น ์ ‘๊ทผ์„ฑ์ด๋ž€? ๊ณ ๋ น์ž, ์žฅ์• ์ธ, ๋น„์žฅ์• ์ธ์— ์ƒ๊ด€์—†์ด ๋ชจ๋“  ์‚ฌ๋žŒ์ด ๋™๋“ฑํ•˜๊ฒŒ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. ๋งŒ์•ฝ ์‹œ๊ฐ์ด ๋ถˆํŽธํ•œ ์‚ฌ๋žŒ์ด ์›น์„ ์ด์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์Šคํฌ๋ฆฐ๋ฆฌ๋”์— ์˜์ง€ํ•ด ์›ํ•˜๋Š” ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•˜๊ฒŒ ๋  ๊ฒƒ์ด๋‹ค. ์ด๋•Œ ์‹œ๊ฐ์ด ๋ถˆํŽธํ•œ ์‚ฌ๋žŒ๋„ ์›น์• ์„œ ์›ํ•˜๋Š” ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•˜๋Š”๋ฐ ์–ด๋ ค์›€์ด ์—†๋„๋ก ์Šคํฌ๋ฆฐ๋ฆฌ๋”๊ฐ€ ๋ณด๋‹ค ์ •ํ™•ํ•˜๊ณ  ๋ช…ํ™•ํ•˜๊ฒŒ ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ํ•˜๋„๋ก ํ•ด์•ผ ํ•œ๋‹ค. NAVER์˜ ๊ฒ€์ƒ‰์ฐฝ์ด๋‹ค ์‹œ๊ฐ์ด ๋ถˆํŽธํ•œ ์‚ฌ๋žŒ์ด๋ผ๋ฉด ์ด ์š”์†Œ๊ฐ€ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ถ€๋ถ„์ธ์ง€๋ฅผ ์ „ํ˜€ ์•Œ ์ˆ˜ ์—†๋‹ค. ํ•˜์ง€๋งŒ ์ด ํฌํ„ธ์‚ฌ์ดํŠธ์—์„œ ๊ฒ€์ƒ‰์ฐฝ์„ ๊ตฌ์„ฑํ•œ ์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ณด๊ฒŒ ๋˜๋ฉด ์‚ฌ์šฉ์ž์—๊ฒŒ๋Š” ๋ณด์—ฌ์ง€์ง€ ์•Š์ง€๋งŒ ๊ฒ€์ƒ‰์ด๋ผ๊ณ  ํ‘œ๊ธฐ๋ฅผ ํ•ด๋‘๊ณ  ์Šคํฌ๋ฆฐ๋ฆฌ๋”๊ฐ€ ์ธ์‹ํ•  ์ˆ˜ ์žˆ๊ฒŒ๋” ์ž‘์„ฑํ•ด๋‘์—ˆ๋‹ค. ๊ฒ€์ƒ‰ ๐Ÿ“’ WAI-ARIA (Web Accessibility Initiative..
[HTML] HTML ๊ฐœ์š” ๐ŸŒ ์›น ํ‘œ์ค€ (Web Standards) ๋ธŒ๋ผ์šฐ์ €๋งˆ๋‹ค ํ•ด์„ํ•˜๋Š” ๋ฐฉ์‹์— ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค. โžž ๊ฐ™์€ ๊ธฐ๋Šฅ์œผ๋กœ ๋™์ž‘ํ•˜๋„๋ก ํ‘œ์ค€ ์ง€์ •(W3C) ํ‘œ์ค€ํ™” ์ด์ „์— ๋…์ž์ ์ธ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜๊ธฐ๋„ ํ–ˆ์œผ๋ฏ€๋กœ ์„ ํƒ์˜ ํญ์ด ๋งค์šฐ ์ข์•˜์—ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ €๋งˆ๋‹ค ์Šคํƒ€์ผ์ด ๋‹ค๋ฅผ ์ˆ˜๋Š” ์žˆ๋‹ค.(๊ฐ™์€ ๊ธฐ๋Šฅ์„ ํ•จ) HTML5 - 2014๋…„์— ๊ณต์‹ ํ‘œ์ค€ํ™”๋จ. ๐ŸŒ ์›น ์ ‘๊ทผ์„ฑ (Web Accessibility) ์ผ์‹œ์ ์œผ๋กœ๋‚˜ ์–ด๋–ค ์ƒํ™ฉ์—์„œ๋“  ์›น์‚ฌ์ดํŠธ๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ.(๋งˆ์šฐ์Šคํƒ€์žํŒ, ์Œ์„ฑ์ธ์‹ ๋“ฑ) ์ผ๋ฐ˜์ ์ธ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์ด์šฉํ•˜๊ธฐ ์–ด๋ ค์šด ๊ฒฝ์šฐ ๋ธŒ๋ผ์šฐ์ง•์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ์—ญํ• ์„ ํ•˜๊ฒŒ ๋จ. ๐ŸŒ ์›น ํ˜ธํ™˜์„ฑ(Cross Browsing) ์›น๋ธŒ๋ผ์šฐ์ €์— ์ƒ๊ด€์—†์ด ์˜๋„ํ•œ๋Œ€๋กœ ๊ธฐ๋Šฅ ๋™์ž‘ํ•˜๋Š” ๊ฒƒ.(ํฌ๋กœ์Šค๋ธŒ๋ผ์šฐ์ง•) ๋ธŒ๋ผ์šฐ์ €์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ๊ธฐ๋Šฅ์„ ํ•  ์ˆ˜๋„ ์žˆ์Œ.(ํ•˜..
[React] setState callBack ํ•จ์ˆ˜ SleepyWoods ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ์ „์ฒด ์ฑ„ํŒ… ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ–ˆ์—ˆ๋‹ค. ์ „์ฒด ์ฑ„ํŒ…์„ ๋‹ด๋‹นํ•˜๋Š” Chat ์ปดํฌ๋„ŒํŠธ์—์„œ ์ง€์—ญ์ƒํƒœ๋กœ ์ „์ฒด ์ฑ„ํŒ… ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๋„๋ก ํ–ˆ๋Š”๋ฐ ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. const [chatDatas, setChatDatas] = useState([]); // ์ฑ„ํŒ… ์—…๋ฐ์ดํŠธ const updateChat = (chat: chatType) => { ... chat.timestamp = calcTimeFromMs(chat.timestamp); // timestamp์„ ํฌ๋ฉงํŒ…ํ•˜๋Š” ํ•จ์ˆ˜ ํ˜ธ์ถœ setChatDatas([...chatDatas, chat]); }; type chatType = { type: string; timestamp: string; nickname: string | numb..