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

CS

(6)
ํˆฌ ํฌ์ธํ„ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ •์˜ํˆฌ ํฌ์ธํ„ฐ(Two Pointer) ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ž€, ๋ฐฐ์—ด์ด๋‚˜ ์ปฌ๋ ‰์…˜์—์„œ ๋‘ ๊ฐœ์˜ ํฌ์ธํ„ฐ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฒ”์œ„๋ฅผ ์กฐ์ ˆํ•ด๊ฐ€๋ฉฐ ํŠน์ •ํ•œ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๋ถ€๋ถ„์„ ์ฐพ๋Š” ๊ธฐ๋ฒ•์ด๋‹ค.ํŠนํžˆ ์ •๋ ฌ๋œ ๋ฐฐ์—ด์ด๋‚˜ ์ปฌ๋ ‰์…˜๊ณผ ๊ด€๋ จ๋œ ๋ฌธ์ œ์—์„œ ํšจ๊ณผ์ ์œผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค.ํ•ต์‹ฌ ์•„์ด๋””์–ด๋Š” ๋ฐฐ์—ด์˜ ์„œ๋กœ ๋‹ค๋ฅธ ๋‘ ๋ถ€๋ถ„์„ ๋™์‹œ์— ๋ฐ˜๋ณตํ•˜๋Š” ๊ฒƒ์ด๋‹ค.์ผ๋ฐ˜์ ์œผ๋กœ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(n), ๊ณต๊ฐ„ ๋ณต์žก๋„๋Š” O(1)์ด ๋œ๋‹ค.๋Ÿฐํƒ€์ž„์„ ์ตœ์ ํ™”ํ•˜๊ณ  ๊ณต๊ฐ„์„ ์ ˆ์•ฝํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.๊ณ ๋ คํ•ด์•ผ ํ•  ์ ํฌ์ธํ„ฐ์˜ ์ดˆ๊ธฐ ์œ„์น˜ ์„ค์ •ํฌ์ธํ„ฐ๋ฅผ ์–ด๋””์„œ ์‹œ์ž‘ํ•˜๊ณ  ์–ด๋–ค ์ธ๋ฑ์Šค๋ฅผ ๋น„๊ตํ•  ๊ฒƒ์ธ๊ฐ€?ํฌ์ธํ„ฐ์˜ ์ด๋™ ๋ฐฉํ–ฅ๊ณผ ์กฐ๊ฑด๊ฐ™์€ ๋ฐฉํ–ฅ์œผ๋กœ ์ด๋™ํ•  ๊ฒƒ์ธ๊ฐ€, ๋‹ค๋ฅธ ๋ฐฉํ–ฅ์œผ๋กœ ์ด๋™ํ•  ๊ฒƒ์ธ๊ฐ€?ํฌ์ธํ„ฐ๋ฅผ ์–ธ์ œ ์›€์ง์ผ ๊ฒƒ์ธ๊ฐ€?ํฌ์ธํ„ฐ์˜ ์ค‘์ง€ ์กฐ๊ฑดํฌ์ธํ„ฐ๋ฅผ ์–ธ์ œ ๋ฉˆ์ถœ ๊ฒƒ์ธ๊ฐ€?์ผ๋ฐ˜์ ์œผ๋กœ ๋ฐฐ์—ด์˜ ๋ฐ˜๋ณต์ด ๋๋‚  ๋•Œ๋‚˜ ๋‘ ํฌ์ธํ„ฐ๊ฐ€ ..
์„ธ์…˜ ๊ธฐ๋ฐ˜ ์ธ์ฆ vs ํ† ํฐ ๊ธฐ๋ฐ˜ ์ธ์ฆ, ๊ทธ๋ฆฌ๊ณ  ์ฟ ํ‚ค๐Ÿช ์„ธ์…˜? ํ† ํฐ? ์ฟ ํ‚ค? ์ธ์ฆ ๋ฐฉ์‹์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•  ๋•Œ ํ—ท๊ฐˆ๋ฆฌ๋Š” ๊ฐœ๋…๋“ค์„ ์ •๋ฆฌํ•ด๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. HTTP๋Š” ๋ฌด์ƒํƒœ!์šฐ์„  HTTP ํ”„๋กœํ† ์ฝœ์ด ๋ฌด์ƒํƒœ(stateless)๋ผ๋Š” ๊ฒƒ์„ ์ดํ•ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.HTTP ํ”„๋กœํ† ์ฝœ๋กœ ์›น์„ ํ†ตํ•ด ํ†ต์‹ ํ•ด์•ผ ํ•  ๋•Œ, ์šฐ๋ฆฌ๊ฐ€ ๋ณด๋‚ด๋Š” ๊ฐ๊ฐ์˜ ์š”์ฒญ์€ ๋…๋ฆฝ์ ์ž…๋‹ˆ๋‹ค.์š”์ฒญ์ด ๋๋‚˜๋ฉด ์„œ๋ฒ„๋Š” ํด๋ผ์ด์–ธํŠธ์˜ ์ •๋ณด๋ฅผ ์žŠ์–ด๋ฒ„๋ฆฌ๊ณ , ์š”์ฒญ์„ ๋ณด๋‚ผ ๋•Œ๋งˆ๋‹ค ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ˆ„๊ตฐ์ง€ ์•Œ๋ ค์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„์—๊ฒŒ ์š”์ฒญ์„ ๋ณด๋‚ผ ๋•Œ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋ˆ„๊ตฐ์ง€ ์•Œ๋ ค์ฃผ๋Š” ๋ฐฉ์‹์œผ๋กœ ๋Œ€ํ‘œ์ ์œผ๋กœ ์„ธ์…˜๊ณผ ํ† ํฐ์ด ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.์„ธ์…˜ ์ธ์ฆ ๋ฐฉ์‹๊ณผ ํ† ํฐ ์ธ์ฆ ๋ฐฉ์‹์˜ ๋กœ๊ทธ์ธ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์„ธ์…˜(session)์„ธ์…˜ ์ธ์ฆ ๋ฐฉ์‹์œผ๋กœ ๋กœ๊ทธ์ธ์„ ํ•˜๋Š” ๊ณผ์ •์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.ํด๋ผ์ด์–ธํŠธ๋Š” ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด(์˜ˆ๋ฅผ ๋“ค๋ฉด ์œ ์ €๋ช…, ๋น„๋ฐ€๋ฒˆํ˜ธ)๋ฅผ ๋‹ด์•„์„œ ..
Boyer-Moore ๊ณผ๋ฐ˜์ˆ˜ ํˆฌํ‘œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ Boyer-Moore ๊ณผ๋ฐ˜์ˆ˜ ํˆฌํ‘œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (Boyer-Moore majority vote algorithm)์ฃผ์–ด์ง„ ํ›„๋ณด์ž ๋ชฉ๋ก์—์„œ ๊ณผ๋ฐ˜์ˆ˜๋ฅผ ์ฐจ์ง€ํ•˜๋Š” ํ›„๋ณด๋ฅผ ์ฐพ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.๋ฐฐ์—ด ๋‚ด ๊ณผ๋ฐ˜์ˆ˜์— ํ•ด๋‹นํ•˜๋Š” ์›์†Œ๊ฐ€ ํ•ญ์ƒ ์กด์žฌํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉด, ๊ฒฐ๊ณผ๊ฐ’์€ ํ•ญ์ƒ ๊ณผ๋ฐ˜์ˆ˜ ์›์†Œ๊ฐ€ ๋œ๋‹ค.ํ•ต์‹ฌ ์•„์ด๋””์–ด๋Š” ์ฃผ์–ด์ง„ ํ›„๋ณด์ž ๋ชฉ๋ก์— ๋‘ ๊ฐ€์ง€์˜ ์„œ๋กœ ๋‹ค๋ฅธ ํ›„๋ณด๋ฅผ ์ง€์ •ํ•˜๊ณ , ์ด๋“ค์„ ์„œ๋กœ ์ƒ์‡„์‹œ์ผœ๊ฐ€๋ฉฐ ์ตœ์ข… ํ›„๋ณด๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(N), ๊ณต๊ฐ„ ๋ณต์žก๋„๋Š” O(1) ์ด๋‹ค. ๋™์ž‘ ๋ฐฉ์‹ ์ž…๋ ฅ ์‹œํ€€์Šค ์š”์†Œ m๊ณผ ์นด์šดํ„ฐ c๋ฅผ 0์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค.์ž…๋ ฅ ์‹œํ€€์Šค์—์„œ ๊ฐ๊ฐ์˜ ์š”์†Œ x์— ๋Œ€ํ•ด์„œc == 0 ์ด๋ฉด m = x, c = 1 ๋Œ€์ž…ํ•œ๋‹ค.m == x ์ด๋ฉด c = c + 1 ๋Œ€์ž…ํ•œ๋‹ค.m != x ์ด๋ฉด c = c -1 ๋Œ€์ž…ํ•œ๋‹ค.m์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค...
์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ณต์žก๋„ ์‹œ๊ฐ„ ๋ณต์žก๋„ & ๊ณต๊ฐ„ ๋ณต์žก๋„ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๋ณต์žก๋„๋Š” ์‹œ๊ฐ„ ๋ณต์žก๋„์™€ ๊ณต๊ฐ„ ๋ณต์žก๋„๋กœ ๋‚˜๋‰œ๋‹ค. ์ตœ๊ทผ์—๋Š” ํ•˜๋“œ์›จ์–ด ๋ฉ”๋ชจ๋ฆฌ ์šฉ๋Ÿ‰์ด ์ปค์กŒ๊ธฐ ๋•Œ๋ฌธ์—, ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ฑ๋Šฅ ์ธก์ •์—์„œ๋Š” ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ ์ข€ ๋” ์šฐ์„ ์‹œ๋œ๋‹ค. 1. ์‹œ๊ฐ„ ๋ณต์žก๋„์•Œ๊ณ ๋ฆฌ์ฆ˜์— ํ•„์š”ํ•œ ๋‹จ๊ณ„ ์ˆ˜๋งŒ ๊ณ ๋ คํ•œ๋‹ค.๋ฐ์ดํ„ฐ๊ฐ€ ์ฆ๊ฐ€ํ• ์ˆ˜๋ก ๋‹จ๊ณ„ ์ˆ˜๊ฐ€ ์–ด๋–ป๊ฒŒ ๋ณ€ํ•˜๋Š”์ง€๋ฅผ ๋งํ•ด์ค€๋‹ค.2. ๊ณต๊ฐ„๋ณต์žก๋„ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰์‹œ์ผฐ์„ ๋•Œ ํ•„์š”๋กœ ํ•˜๋Š” ์ž์› ๊ณต๊ฐ„์˜ ์–‘์ด๋‹ค.์ •์ ์œผ๋กœ ์„ ์–ธ๋œ ๋ณ€์ˆ˜, ์žฌ๊ท€ํ•จ์ˆ˜์™€ ๊ฐ™์ด ๋™์ ์œผ๋กœ ๊ณต๊ฐ„์„ ๊ณ„์†ํ•ด์„œ ํ•„์š”๋กœ ํ•˜๋Š” ๊ฒฝ์šฐ๋„ ํฌํ•จํ•œ๋‹ค. ๋น… ์˜ค ํ‘œ๊ธฐ๋ฒ•์ž๋ฃŒ๊ตฌ์กฐ์™€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ํšจ์œจ์„ฑ์„ ๊ฐ„๊ฒฐํ•˜๊ณ  ์ผ๊ด€๋œ ์–ธ์–ด๋กœ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด ๋“ฑ์žฅํ–ˆ๋‹ค.์ ˆ๋Œ€์ ์ธ ์‹คํ–‰ ์‹œ๊ฐ„๊ณผ ํ•„์š”ํ•œ ์ž์› ๊ณต๊ฐ„์˜ ์–‘์„ ํŒŒ์•…ํ•˜๊ธฐ๋ž€ ์–ด๋ ค์šฐ๋ฏ€๋กœ, ๋น… ์˜ค ํ‘œ๊ธฐ๋ฒ•์œผ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ํšจ์œจ์„ฑ์„ ์ •๋Ÿ‰ํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.์ž…๋ ฅ ํฌ๊ธฐ N์— ๋”ฐ๋ผ ์—ฐ์‚ฐ์ด..
[๋„คํŠธ์›Œํฌ] HTTP Methods ์ฐจ์ด์  ์ •๋ฆฌ HTTP ๋ฉ”์„œ๋“œHTTP ํ”„๋กœํ† ์ฝœ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์š”์ฒญ ๋ฉ”์„œ๋“œ๋กœ, ์ž์›์— ๋Œ€ํ•ด ์„œ๋ฒ„๊ฐ€ ์ˆ˜ํ–‰ํ•  ๋™์ž‘์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.์ด 9๊ฐ€์ง€๊ฐ€ ์žˆ์œผ๋ฉฐ REST API๋ฅผ ์„ค๊ณ„ํ•  ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๋ฉ”์„œ๋“œ๋Š” 5๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. ์ฃผ์š” ๋ฉ”์„œ๋“œ 5๊ฐ€์ง€GET : ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์ž์›์„ ์š”์ฒญํ•˜๋Š” ๋™์ž‘POST : ์„œ๋ฒ„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜์—ฌ ์ž์›์„ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธ ํ•˜๋Š” ๋™์ž‘PUT : ์„œ๋ฒ„์— ์ž์›์„ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ๊ธฐ์กด ์ž์›์„ ๋Œ€์ฒดํ•˜๋Š” ๋™์ž‘PATCH : ์„œ๋ฒ„ ์ž์›์˜ ์ผ๋ถ€๋งŒ ์ˆ˜์ •ํ•˜๋Š” ๋™์ž‘DELETE : ์„œ๋ฒ„์—์„œ ์ž์›์„ ์‚ญ์ œํ•˜๋Š” ๋™์ž‘ GET vs POST1. GET๋ชฉ์ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์ž์›์„ ์š”์ฒญํ•˜๋Š” ๋™์ž‘๋ฐ์ดํ„ฐ ์ „์†ก ๋ฐฉ์‹์š”์ฒญ ๋ณธ๋ฌธ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ , ์š”์ฒญ URI์— Path Variable ์ด๋‚˜ Query String ์„ ์‚ฌ์šฉํ•  ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.๋ณด์•ˆ๋ฐ์ดํ„ฐ๊ฐ€ URL์— ํฌํ•จ๋˜๋ฏ€๋กœ..
[์ž๋ฃŒ๊ตฌ์กฐ] ํ•ด์‹œ ํ…Œ์ด๋ธ” ํ•ด์‹œ ํ…Œ์ด๋ธ”์ด๋ž€?ํ‚ค(key)์™€ ๊ฐ’(value)์˜ ์Œ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ.ํ•ด์‹œ ํ…Œ์ด๋ธ”์—์„œ ์‚ฝ์ž…/์‚ญ์ œ/ํƒ์ƒ‰ ์‹œ ํ‰๊ท ์ ์ธ ์‹œ๊ฐ„๋ณต์žก๋„๋Š” O(1)๋กœ, ์–ด๋–ค ๊ฐ’์„ ์ฐพ๋”๋ผ๋„ ํ•œ ๋‹จ๊ณ„๋งŒ ์†Œ์š”๋œ๋‹ค.์‚ฌ์šฉ ์‚ฌ๋ก€๊ฒ€์ƒ‰์ด๋‚˜ ์ €์žฅ์ด ๋นˆ๋ฒˆํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋ฉด ์ข‹์€๋ฐ, ํŠนํžˆ ์บ์‹œ๋ฅผ ๊ตฌํ˜„ํ•  ๋•Œ ํ•ด์‹œ ํ…Œ์ด๋ธ”์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.์บ์‹œ๋Š” ์ด์ „์— ๊ณ„์‚ฐ๋œ ๊ฒฐ๊ณผ๋ฅผ ์ž„์‹œ๋กœ ์ €์žฅํ•˜๋Š” ์žฅ์†Œ๋กœ, ์บ์‹œ์˜ ์ ‘๊ทผ ์‹œ๊ฐ„์— ๋น„ํ•ด ์›๋ž˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ ‘๊ทผํ•˜๋Š” ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ๊ฒฝ์šฐ๋‚˜ ๊ฐ’์„ ๋‹ค์‹œ ๊ณ„์‚ฐํ•˜๋Š” ์‹œ๊ฐ„์„ ์ ˆ์•ฝํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ์— ์‚ฌ์šฉ๋œ๋‹ค.์ž‘๋™ ์›๋ฆฌํ•ด์‹œ ํ…Œ์ด๋ธ” ๋‚ด๋ถ€์—์„œ๋Š” index์™€ value๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฐฐ์—ด ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.ํ‚ค(key)๋ฅผ ํ•ด์‹œ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค๋กœ ๋ณ€ํ™˜ํ•œ ํ›„ ํ•ด๋‹น ์ธ๋ฑ์Šค์— ๊ฐ’(value)์„ ์ €์žฅํ•œ๋‹ค. ํ•ด์‹œ ํ•จ์ˆ˜ํ•ด์‹œ ํ…Œ์ด๋ธ”์—์„œ์˜ ํ•ด์‹œ ํ•จ..