์ธ๋„ค์ผ ๐ŸŒ— Styled Components๋กœ ๋ผ์ดํŠธ/๋‹คํฌ ๋ชจ๋“œ ์ „ํ™˜ํ•˜๊ธฐ ์‹ค์ œ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ๋‹คํฌ ๋ชจ๋“œ์™€ ๋ผ์ดํŠธ ๋ชจ๋“œ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•œ UX ์š”์†Œ ์ค‘ ํ•˜๋‚˜์ด๋‹ค.styled-components์™€ ThemeProvider๋ฅผ ํ™œ์šฉํ•˜๋ฉด ์ „์—ญ ํ…Œ๋งˆ ์ „ํ™˜์„ ๋งค์šฐ ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.โœ… 1. ํ…Œ๋งˆ ๊ฐ์ฒด ์ •์˜ํ•˜๊ธฐ// themes.jsexport const lightTheme = { textColor: "#111", backgroundColor: "whitesmoke",};export const darkTheme = { textColor: "whitesmoke", backgroundColor: "#111",};โœ… 2. App์—์„œ ํ…Œ๋งˆ ์ƒํƒœ ๊ด€๋ฆฌ์—ฌ๋Ÿฌ๊ฐœ์˜ property๋ฅผ ๊ฐ€์ง„ ๊ฐ์ฒด๋ฅผ ๋‘๊ฐœ (๋‹คํฌ/๋ผ์ดํŠธ) ์„ค์ •ํ•จ์œผ๋กœ์จ ๊ฐ„ํŽธํ•˜๊ฒŒ theme์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค.  // Ap..
์ธ๋„ค์ผ Styled Components - ์• ๋‹ˆ๋ฉ”์ด์…˜, ์ปดํฌ๋„ŒํŠธ ์„ ํƒ์ž, ์ค‘์ฒฉ ์Šคํƒ€์ผ๋ง ์ด๋ฒˆ์— ๋”๋“ฌ์–ด๋ณผ ๊ธฐ์–ต์€ ..  keyframes ๋„ const ๋กœ ๋”ฐ๋กœ ๋นผ์„œ ๊ด€๋ฆฌํ•˜๋Š” ๊ฑฐ + styled component ์กฐ๊ฑด๋ฌธ์ฒ˜๋Ÿผ ์“ฐ๊ธฐ !! โœ… ํšŒ์ „ ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋งŒ๋“ค๊ธฐ๋จผ์ € keyframes๋ฅผ ์‚ฌ์šฉํ•ด ํšŒ์ „ํ•˜๋Š” ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์ •์˜ํ•œ๋‹ค.import styled, { keyframes } from "styled-components"; const rotationAnimation = keyframes` 0% { transform: rotate(0deg); border-radius: 0px; } 50% { border-radius: 100px; } 100% { transform: rotate(360deg); border-radiu..
์ธ๋„ค์ผ Styled Component์—์„œ ์ปดํฌ๋„ŒํŠธ ํ™•์žฅํ•˜๊ธฐ ์˜›๋‚ ์— ๋ฆฌ์•กํŠธ ์ฒ˜์Œ ์ตํž๋•Œ ๋‹ค ๊ณต๋ถ€ํ–ˆ๋˜ ๊ฒƒ ๊ฐ™์€๋ฐ, ํ”„๋กœ์ ํŠธ๋“ค์„ ํ•˜๋‹ค๋ณด๋‹ˆ ๋น„์Šทํ•œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์€๋ฐ ๋ฌด์‹œํ•˜๊ณ  ๊ณ„์† ํ•˜๋‹ค๊ฐ€ .. '์•„ ์˜›๋‚ ์— ์ด๊ฑฐ ๊ณต๋ถ€ํ–ˆ์—ˆ๋Š”๋ฐ .. ' ์‹ถ์–ด์„œ ์ •๋ฆฌํ•˜๊ฒŒ๋๋‹ค.  ์ผ๋‹จ ๊ทธ ์ „์— styled component ๋ฅผ ์“ฐ๋Š” ์ด์œ ๋Š” ๊ธฐ์กด์— div๋ฅผ ๋งŒ๋“ค๊ณ  className ์ด๋‚˜ style์„ ๋ถ€์—ฌํ•˜๋Š” ์‹์ด์—ˆ์ง€๋งŒ,๋Œ€์‹  styled๋ฅผ ์ž„ํฌํŠธ ํ•ด์„œ ์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ•  html ์—์„œ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์€ ํƒœ๊ทธ๋ฅผ ์ง€์ •ํ•˜๊ณ , ๋ฐฑํ‹ฑ ์•ˆ์— css์ฝ”๋“œ๋ฅผ ์ ์–ด์ค€๋‹ค. -> ์ปดํฌ๋„ŒํŠธ ์ด๋ ‡๊ฒŒ ํ•˜๊ฒŒ ๋˜๋ฉด ์Šคํƒ€์ผ๋ง ๋œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ, ์ปดํฌ๋„ŒํŠธ ํ•จ์ˆ˜ ์•ˆ์— ์Šคํƒ€์ผ์„ ์ ์„ ํ•„์š”๊ฐ€ ์—†๊ณ , ๊ฐ€๋…์„ฑ์ด ์ข‹์•„์ง„๋‹ค.  ๋‚˜๋Š” ํผ์งํ•œ or ๋งŽ์ด ์‚ฌ์šฉํ• ๋งŒํ•œ ์ปดํฌ๋„ŒํŠธ๋“ค์€ ์Šคํƒ€์ผ ์ปดํฌ๋„ŒํŠธ๋กœ ์ง€์ •ํ•˜๊ณ , ๊ทธ ์•ˆ์˜ ์ž์ž˜ํ•œ ํ…์ŠคํŠธ๋‚˜ ๋ฒ„..
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ์˜ BFS์™€ DFS 1. BFS (Breadth-First Search)BFS๋Š” ์‹œ์ž‘ ๋…ธ๋“œ์—์„œ๋ถ€ํ„ฐ ๊ฐ€๊นŒ์šด ๋…ธ๋“œ๋ถ€ํ„ฐ ์ฐจ๋ก€๋กœ ๋ฐฉ๋ฌธํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค.๋ณดํ†ต ํ(Queue, FIFO: First-In, First-Out)๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.์ตœ๋‹จ ๊ฒฝ๋กœ, ๋ ˆ๋ฒจ ์ˆœํšŒ ๋“ฑ์— ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.function bfsWithVisited(start, getNeighbors) { const queue = [start]; const visited = new Set(); visited.add(start); console.log("์ดˆ๊ธฐ visited:", Array.from(visited)); while (queue.length > 0) { const current = queue.shift(); // ํ์—์„œ ๊ฐ€์žฅ ์•ž์˜ ์›..
์ธ๋„ค์ผ 17. ๋™์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ (Dynamic Programming) Codility Lesson ํ•œ๊ตญ์–ด ์ •๋ฆฌ๋ณธ (JavaScript ver.) ๋™์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ(Dynamic Programming)์ด๋ž€?๋™์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ(DP)์€ ์ž‘์€ ๋ฌธ์ œ๋“ค์˜ ํ•ด๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋” ํฐ ๋ฌธ์ œ์˜ ํ•ด๋ฅผ ๊ตฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ธฐ๋ฒ• ์ด๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฌธ์ œ๋ฅผ ์—ฌ๋Ÿฌ ์ž‘์€ ๋ถ€๋ถ„ ๋ฌธ์ œ๋กœ ๋‚˜๋ˆ„๊ณ , ์ค‘๋ณต ๊ณ„์‚ฐ์„ ์ค„์ด๊ธฐ ์œ„ํ•ด ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅ(memoization) ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค.๋™์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ํšจ๊ณผ์ ์ธ ๊ฒฝ์šฐ:์ตœ์  ๋ถ€๋ถ„ ๊ตฌ์กฐ(Optimal Substructure): ํฐ ๋ฌธ์ œ์˜ ์ตœ์ ํ•ด๊ฐ€ ์ž‘์€ ๋ถ€๋ถ„ ๋ฌธ์ œ์˜ ์ตœ์ ํ•ด๋กœ ๊ตฌ์„ฑ๋  ์ˆ˜ ์žˆ์Œ์ค‘๋ณต ๋ถ€๋ถ„ ๋ฌธ์ œ(Overlapping Subproblems): ๋™์ผํ•œ ์ž‘์€ ๋ฌธ์ œ๋ฅผ ์—ฌ๋Ÿฌ ๋ฒˆ ํ•ด๊ฒฐํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๋Œ€ํ‘œ์ ์ธ DP ๋ฌธ์ œ:์ตœ๋‹จ ๊ฒฝ๋กœ ๋ฌธ์ œ (Floyd-Warshall, Bellman-Ford)๋ฐฐ๋‚ญ ๋ฌธ์ œ (Knapsack Problem)๋™์ „ ๊ฑฐ์Šค๋ฆ„๋ˆ ๋ฌธ์ œ (Coi..
์ธ๋„ค์ผ 16. ํƒ์š•์  ์•Œ๊ณ ๋ฆฌ์ฆ˜ (Greedy Algorithms) Codility Lesson ํ•œ๊ตญ์–ด ์ •๋ฆฌ๋ณธ (JavaScript ver.) ํƒ์š•์  ์•Œ๊ณ ๋ฆฌ์ฆ˜(Greedy Algorithm)์ด๋ž€?ํƒ์š•์  ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๊ฐ ๋‹จ๊ณ„์—์„œ ๊ฐ€์žฅ ์ตœ์„ ์˜ ์„ ํƒ์„ ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ตœ์ ํ•ด๋ฅผ ์ฐพ๋Š” ๋ฐฉ๋ฒ• ์ด๋‹ค. ์ „์ฒด ์ตœ์ ํ•ด๋ฅผ ๊ณ ๋ คํ•˜์ง€ ์•Š๊ณ , ๋งค ์ˆœ๊ฐ„ ์ตœ์ ์˜ ์„ ํƒ์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ตฌํ˜„์ด ๊ฐ„๋‹จํ•˜์ง€๋งŒ, ํ•ญ์ƒ ์ตœ์ ํ•ด๋ฅผ ๋ณด์žฅํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค.ํƒ์š•์  ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์ ์šฉ๋  ์ˆ˜ ์žˆ๋Š” ๋Œ€ํ‘œ์ ์ธ ๋ฌธ์ œ๋“ค:๋™์ „ ๊ฑฐ์Šค๋ฆ„๋ˆ ๋ฌธ์ œ (Coin Change Problem)ํšŒ์˜์‹ค ๋ฐฐ์ • ๋ฌธ์ œ (Activity Selection Problem)๋ฐฐ๋‚ญ ๋ฌธ์ œ (Knapsack Problem)์ž‘์—… ์Šค์ผ€์ค„๋ง ๋ฌธ์ œ (Activity Selection)์ตœ์†Œ ์‹ ์žฅ ํŠธ๋ฆฌ (MST, Minimum Spanning Tree)ํ—ˆํ”„๋งŒ ์ฝ”๋”ฉ (Huffman Coding)ํƒ์š• ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ํŠน์ง•๋น ๋ฅธ ์‹คํ–‰ ์‹œ๊ฐ„: O(n log n) ๋˜๋Š” O(..
์ธ๋„ค์ผ 15. ์บํ„ฐํ•„๋Ÿฌ ๋ฐฉ๋ฒ• (Caterpillar Method) Codility Lesson ํ•œ๊ตญ์–ด ์ •๋ฆฌ๋ณธ (JavaScript ver.) 1. ์บํ„ฐํ•„๋Ÿฌ ๋ฐฉ๋ฒ•์ด๋ž€?์บํ„ฐํ•„๋Ÿฌ ๋ฐฉ๋ฒ•์€ ์—ฐ์†๋œ ๋ถ€๋ถ„ ๋ฐฐ์—ด(์Šฌ๋ผ์ด์Šค)์—์„œ ํŠน์ • ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ์ฐพ๋Š” ํšจ์œจ์ ์ธ ๋ฐฉ๋ฒ• ์ด๋‹ค. ๋ณดํ†ต O(n) ์‹œ๊ฐ„ ๋ณต์žก๋„๋กœ ์ตœ์ ํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.2. O(n) ์‹œ๊ฐ„ ๋ณต์žก๋„์˜ ์บํ„ฐํ•„๋Ÿฌ ๋ฐฉ๋ฒ•JavaScript ์ฝ”๋“œ:function caterpillarMethod(A, s) { let n = A.length, front = 0, sum = 0; for (let back = 0; back ์ด ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ฉด O(n) ์‹œ๊ฐ„ ๋ณต์žก๋„๋กœ ํŠน์ • ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๋ถ€๋ถ„ ๋ฐฐ์—ด์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.3. ์บํ„ฐํ•„๋Ÿฌ ๋ฐฉ๋ฒ•์˜ ํ™œ์šฉ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฌธ์ œ์— ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค:์—ฐ์† ๋ถ€๋ถ„ ๋ฐฐ์—ด์˜ ํ•ฉ ์ฐพ๊ธฐ (์˜ˆ: ์—ฐ์†๋œ ์ˆซ์ž์˜ ํ•ฉ์ด ํŠน์ • ๊ฐ’ s๊ฐ€ ๋˜๋Š” ๊ฒฝ์šฐ ์ฐพ๊ธฐ)์—ฐ์†๋œ ์›์†Œ๋“ค์˜ ๊ณฑ ์ฐพ๊ธฐ (์˜ˆ: ์ตœ๋Œ€ ..
์ธ๋„ค์ผ 14. ์ด์ง„ ํƒ์ƒ‰ (Binary Search) Codility Lesson ํ•œ๊ตญ์–ด ์ •๋ฆฌ๋ณธ (JavaScript ver.) 1. ์ด์ง„ ํƒ์ƒ‰(Binary Search)์ด๋ž€?์ด์ง„ ํƒ์ƒ‰์€ ์ •๋ ฌ๋œ ๋ฐฐ์—ด์—์„œ ํŠน์ • ๊ฐ’์„ ์ฐพ๋Š” ํšจ์œจ์ ์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์œผ๋กœ, O(log n) ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง„๋‹ค. ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋ฐ˜๋ณต์ ์œผ๋กœ ๊ฒ€์ƒ‰ ๋ฒ”์œ„๋ฅผ ์ ˆ๋ฐ˜์œผ๋กœ ์ค„์ด๋ฉด์„œ ์›ํ•˜๋Š” ๊ฐ’์„ ์ฐพ๋Š”๋‹ค.์˜ˆ๋ฅผ ๋“ค์–ด, 1๋ถ€ํ„ฐ 16๊นŒ์ง€์˜ ์ˆซ์ž ์ค‘์—์„œ ๋ชฉํ‘œ ์ˆซ์ž๋ฅผ ์ฐพ๋Š”๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด์ž. ๋‹จ์ˆœ ์„ ํ˜• ํƒ์ƒ‰(linear search)์œผ๋กœ๋Š” ์ตœ์•…์˜ ๊ฒฝ์šฐ 16๋ฒˆ์˜ ๋น„๊ต๊ฐ€ ํ•„์š”ํ•˜์ง€๋งŒ, ์ด์ง„ ํƒ์ƒ‰์„ ์‚ฌ์šฉํ•˜๋ฉด ์ตœ๋Œ€ 4๋ฒˆ์˜ ๋น„๊ต๋งŒ์œผ๋กœ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.2. O(log n) ์‹œ๊ฐ„ ๋ณต์žก๋„์˜ ์ด์ง„ ํƒ์ƒ‰ ๊ตฌํ˜„JavaScript ์ฝ”๋“œ:function binarySearch(A, x) { let left = 0, right = A.length - 1; while (left ์‹œ๊ฐ„ ๋ณต์žก๋„: O(log n)..
์ธ๋„ค์ผ 13. ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด (Fibonacci Numbers) Codility Lesson ํ•œ๊ตญ์–ด ์ •๋ฆฌ๋ณธ (JavaScript ver.) ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด(Fibonacci Numbers)์ด๋ž€?ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ •์˜๋œ๋‹ค.F(0) = 0F(1) = 1F(n) = F(n-1) + F(n-2) (n ≥ 2)์˜ˆ์ œ:0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89 ...1. O(2โฟ) ์‹œ๊ฐ„ ๋ณต์žก๋„์˜ ์žฌ๊ท€ ๋ฐฉ์‹ (๋น„ํšจ์œจ์ )JavaScript ์ฝ”๋“œ:function fibonacci(n) { if (n ์ด ๋ฐฉ์‹์€ ๋„ˆ๋ฌด ๋Š๋ ค์„œ n์ด ์ปค์งˆ์ˆ˜๋ก ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.2. O(n) ์‹œ๊ฐ„ ๋ณต์žก๋„์˜ ๋™์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹JavaScript ์ฝ”๋“œ:function fibonacciDP(n) { let fib = new Array(n + 1).fill(0); fib[1] = 1; for (let i = 2; i ์ด ๋ฐฉ์‹..