[C++] ๋ˆ„์  ํ•ฉ(Prefix sum)
ยท
๐Ÿ“ Computer Science/โœ Algorithm
๋ˆ„์  ํ•ฉ(Prefix sum)๊ณ„์‚ฐ ์–‘์„ ์ค„์—ฌ์„œ ์‹œ๊ฐ„์ ์œผ๋กœ ๋งŽ์€ ์ด๋“์„ ๋ณผ ์ˆ˜ ์žˆ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. 1. ๊ธฐ๋ณธ ์›๋ฆฌ1) 1์ฐจ์› ๋ฐฐ์—ด1์ฐจ์› ๋ฐฐ์—ด์—์„œ i๋ฒˆ์งธ๋ถ€ํ„ฐ j๋ฒˆ์งธ ์ธ๋ฑ์Šค๊นŒ์ง€ k๋ฅผ ๋”ํ•œ ๊ฒƒ์„ ๊ธฐ๋กํ•˜๋ ค๋ฉด, ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์˜ i๋ฒˆ์งธ ์ธ๋ฑ์Šค์— k๋ฅผ ๋”ํ•˜๊ณ  j+1๋ฒˆ์งธ ์ธ๋ฑ์Šค์— k๋ฅผ ๋นผ๋ฉด ๋œ๋‹ค.์ƒˆ๋กœ์šด ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋Š” ๊ธฐ์กด ๋ฐฐ์—ด ํฌ๊ธฐ๋ณด๋‹ค ํ•˜๋‚˜ ์ด์ƒ ํฌ๊ฒŒ ๋งŒ๋“ ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํฌ๊ธฐ๊ฐ€ 5์ธ ๋ฐฐ์—ด์—์„œ 0๋ฒˆ์งธ๋ถ€ํ„ฐ 2๋ฒˆ์งธ ์ธ๋ฑ์Šค๊นŒ์ง€ N์„ ๋นผ๊ณ  ์‹ถ๋‹ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ˆ„์  ํ•ฉ ๋ฐฐ์—ด์„ ๋งŒ๋“ ๋‹ค.{ -N, 0, 0, N, 0, 0 } ์œ„ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ 0๋ฒˆ์งธ๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰ ์ธ๋ฑ์Šค๊นŒ์ง€ ๋ˆ„์  ํ•ฉ์„ ๊ณ„์‚ฐํ•˜๊ฒŒ ๋˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.  ์ถ”๊ฐ€๋กœ 1๋ฒˆ์งธ๋ถ€ํ„ฐ 2๋ฒˆ์งธ ์ธ๋ฑ์Šค๊นŒ์ง€ M์„ ๋”ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๋ˆ„์  ํ•ฉ ๋ฐฐ์—ด์— ๊ฐ’์„ ์ถ”๊ฐ€ํ•œ๋‹ค.{ -N, -M, 0, N, M, 0 }..
[Book] ๊ฒŒ์ž„ ์„œ๋ฒ„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ต๊ณผ์„œ - 8์žฅ NoSQL ๊ธฐ์ดˆ
ยท
๐Ÿ“ Book/โœ Game Server
8์žฅ NoSQL ๊ธฐ์ดˆ ์•ž์„œ ์•Œ์•„๋ณธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ด๋‹ค. ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ํ…Œ์ด๋ธ”๊ณผ ์™ธ๋ž˜ ํ‚ค ๋“ฑ์„ ์‚ฌ์šฉํ•˜๊ณ  ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜์˜ ์งˆ์˜ ๊ตฌ๋ฌธ์œผ๋กœ ์›ํ•˜๋Š” ์ •๋ณด๋ฅผ ๋‹ค๊ฐ์ ์œผ๋กœ ๋น ๋ฅด๊ฒŒ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ๋‹ค. ๋˜ ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ์„ ์ค‘์š”ํ•˜๊ฒŒ ์ƒ๊ฐํ•œ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ค‘ ๋˜ ๋‹ค๋ฅธ ํ•˜๋‚˜์ธ NoSQL๋Š” ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ „ํ†ต์ ์œผ๋กœ ์ค‘์‹œํ•˜๋˜ ๋ช‡ ๊ฐ€์ง€๋ฅผ ํฌ๊ธฐํ•˜๋Š” ๋Œ€์‹  ๋‹ค๋ฅธ ์ธก๋ฉด์˜ ์žฅ์ ์„ ๊ฐ€์ง„๋‹ค. 1. ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ NoSQL ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์˜ค๋žœ ์—ญ์‚ฌ๋ฅผ ์ง€๋‹ˆ๊ณ  ์žˆ์ง€๋งŒ, ํŠน์ • ์ƒํ™ฉ์—์„œ ๋ช‡ ๊ฐ€์ง€ ๋ถ€์กฑํ•œ ์ ์ด ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋กœ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ํ…Œ์ด๋ธ”์— ๊ธฐ๋กํ•  ๋•Œ ๋ถˆํŽธํ•  ์ˆ˜ ์žˆ๋‹ค. ๋กœ๊ทธ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ˆ„์ ๋˜์–ด ํ…Œ์ด๋ธ”์— ์•ฝ 1์–ต ๊ฐœ์˜ ๋ ˆ์ฝ”๋“œ๊ฐ€ ์Œ“์˜€์„ ๋•Œ ์œ ์ง€ ๋ณด์ˆ˜๋ฅผ ์œ„ํ•ด ํ•„๋“œ ํ•˜๋‚˜๋ฅผ ๋” ์ถ”๊ฐ€ํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์ด ์˜ค๋ฉด, ..
[C++] ์ค‘๊ฐ„์—์„œ ๋งŒ๋‚˜๊ธฐ(Meet In The Middle)
ยท
๐Ÿ“ Computer Science/โœ Algorithm
์ค‘๊ฐ„์—์„œ ๋งŒ๋‚˜๊ธฐ(Meet In The Middle) ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ๋ฅผ ํ’€ ๋•Œ ์™„์ „ ํƒ์ƒ‰์œผ๋กœ ํƒ์ƒ‰ํ•˜๋Š” ๊ฒฝ์šฐ, ํƒ์ƒ‰์˜ ๋ฒ”์œ„๊ฐ€ ์ปค์งˆ์ˆ˜๋ก ๊ฒฝ์šฐ์˜ ์ˆ˜์™€ ์—ฐ์‚ฐ๋Ÿ‰์ด ๊ธฐํ•˜๊ธ‰์ˆ˜์ ์œผ๋กœ ๋Š˜์–ด๋‚˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜๊ฐ€ ์žˆ๋‹ค. ์ด๋•Œ ์ค‘๊ฐ„์—์„œ ๋งŒ๋‚˜๊ธฐ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฉด, ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ์ œ๊ณฑ๊ทผ๋งŒํผ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค. ์ค‘๊ฐ„์—์„œ ๋งŒ๋‚˜๊ธฐ ๋ฐฉ์‹์€ ์•ž์ชฝ๊ณผ ๋’ค์ชฝ์—์„œ ์ ˆ๋ฐ˜์”ฉ ์ ‘๊ทผํ•˜์—ฌ ์ค‘๊ฐ„์—์„œ ํƒ์ƒ‰ํ•œ ๊ฒฐ๊ณผ๊ฐ€ ๋งŒ๋‚˜๊ฒŒ ํ•˜๋Š” ํƒ์ƒ‰ ๊ธฐ์ˆ ์„ ์˜๋ฏธํ•œ๋‹ค. ์ฆ‰, ์ค‘๊ฐ„์—์„œ ๋งŒ๋‚œ ์—ฐ์‚ฐ์˜ ๊ฒฐ๊ณผ๋ฅผ ํ•ฉ์ณ ์ „์ฒด ๊ฒฐ๊ณผ๋ฅผ ๋ฝ‘์•„๋‚ด๋Š” ๊ฒƒ์ด๋‹ค. ๋ฌธ์ œ https://www.acmicpc.net/problem/1208 1208๋ฒˆ: ๋ถ€๋ถ„์ˆ˜์—ด์˜ ํ•ฉ 2 ์ฒซ์งธ ์ค„์— ์ •์ˆ˜์˜ ๊ฐœ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” N๊ณผ ์ •์ˆ˜ S๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (1 ≤ N ≤ 40, |S| ≤ 1,000,000) ๋‘˜์งธ ์ค„์— N๊ฐœ์˜ ์ •์ˆ˜๊ฐ€ ๋นˆ ์นธ์„ ์‚ฌ..
[Book] ๊ฒŒ์ž„ ์„œ๋ฒ„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ต๊ณผ์„œ - 7์žฅ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ธฐ์ดˆ
ยท
๐Ÿ“ Book/โœ Game Server
7์žฅ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ธฐ์ดˆ 1. ํ”Œ๋ ˆ์ด์–ด์˜ ์ •๋ณด ์ €์žฅ ์‹ฑ๊ธ€ ํ”Œ๋ ˆ์ด ๊ฒŒ์ž„์„ ๋งŒ๋“ค ๋•Œ๋Š” ๋ณดํ†ต ํ”Œ๋ ˆ์ด์–ด์˜ ๋กœ์ปฌ ์ปดํ“จํ„ฐ ์•ˆ์— ์ €์žฅํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ฉ€ํ‹ฐ ํ”Œ๋ ˆ์ด ๊ฒŒ์ž„์„ ๋งŒ๋“ค ๋•Œ๋„ ์‹ฑ๊ธ€ ํ”Œ๋ ˆ์ด์™€ ๊ฐ™์ด ๋กœ์ปฌ ์ปดํ“จํ„ฐ ์•ˆ์— ์ €์žฅํ•œ๋‹ค๋ฉด, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ์ปดํ“จํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•˜๋ฉด, ์ž์‹ ์ด ํ•˜๋˜ ํ”Œ๋ ˆ์ด ์ •๋ณด๋ฅผ ์ด์–ด์„œ ํ•  ์ˆ˜๊ฐ€ ์—†๋‹ค. ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ํ•ดํ‚น์„ ํ•  ์ค„ ์•ˆ๋‹ค๋ฉด, ํ”Œ๋ ˆ์ด ์ •๋ณด๋ฅผ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ์˜จ๋ผ์ธ ๊ฒŒ์ž„์—์„œ๋Š” ํ”Œ๋ ˆ์ด์–ด ์ •๋ณด๋ฅผ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์•„๋‹Œ ์„œ๋ฒ„์—๋งŒ ์ €์žฅํ•œ๋‹ค. ํด๋ผ์ด์–ธํŠธ๋Š” ๋กœ๊ทธ์ธ ํ›„ ํ”Œ๋ ˆ์ด์–ด ์ •๋ณด๋ฅผ ์„œ๋ฒ„์—์„œ ๋ฐ›์•„ ์‚ฌ์šฉํ•œ๋‹ค. ํ”Œ๋ ˆ์ด์–ด ์ •๋ณด๋ฅผ ์„œ๋ฒ„์— ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์—๋Š” ํฌ๊ฒŒ ํŒŒ์ผ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์žˆ๋‹ค. ์ƒ์šฉ์œผ๋กœ ์„œ๋น„์Šค๋˜๋Š” ๊ฒŒ์ž„๋“ค์€ ๋Œ€๋ถ€๋ถ„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ด์šฉํ•ด ํ”Œ๋ ˆ์ด์–ด ์ •๋ณด๋ฅผ ์ €์žฅํ•œ๋‹ค. ํ”Œ๋ ˆ์ด์–ด ๊ฐ๊ฐ..
[Book] ๊ฒŒ์ž„ ์„œ๋ฒ„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ต๊ณผ์„œ - 6์žฅ ๊ฒŒ์ž„ ๋„คํŠธ์›Œํฌ ์—”์ง„ ํ”„๋ผ์šฐ๋“œ๋„ท
ยท
๐Ÿ“ Book/โœ Game Server
6์žฅ ๊ฒŒ์ž„ ๋„คํŠธ์›Œํฌ ์—”์ง„ ํ”„๋ผ์šฐ๋“œ๋„ท 1. ๊ฒŒ์ž„ ์„œ๋ฒ„, ๋„คํŠธ์›Œํฌ ์—”์ง„ ๊ฒŒ์ž„ ์„œ๋ฒ„์™€ ๋ฉ€ํ‹ฐํ”Œ๋ ˆ์ด์–ด ์ฒ˜๋ฆฌ๋ฅผ ๊ฐœ๋ฐœํ•  ๋•Œ ๋„คํŠธ์›Œํ‚น ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด ๋ณดํ†ต ์†Œ์ผ“ API๋ฅผ ์ด์šฉํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์†Œ์ผ“ API๋งŒ ์ด์šฉํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฒˆ๊ฑฐ๋กœ์›€์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. ์šด์˜์ฒด์ œ๋งˆ๋‹ค ์†Œ์ผ“ API๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์— ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค. ์†Œ์ผ“ API์—์„œ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š” ๊ธฐ๋Šฅ์€ ์ง์ ‘ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด ๋„คํŠธ์›Œํฌ ์—”์ง„์„ ์‚ฌ์šฉํ•˜๊ธฐ๋„ ํ•œ๋‹ค. 2. ๊ฐœ๋ฐœ ํ™˜๊ฒฝ๊ณผ ๊ธฐ๋ณธ ๋ชจ๋“ˆ ๋„คํŠธ์›Œํฌ ์—”์ง„ ์ค‘ ํ•˜๋‚˜์ธ ํ”„๋ผ์šฐ๋“œ๋„ท์€... ์ƒ์—…์šฉ ์†Œํ”„ํŠธ์›จ์–ด๋กœ ๊ฐœ์ธ์ด๋‚˜ ํŠน์ • ์กฐ๊ฑด์˜ ์ธ๋”” ๊ฐœ๋ฐœ์‚ฌ์—์„œ๋Š” ๋ฌด๋ฃŒ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ-์„œ๋ฒ„ ๊ฐ„ ๋„คํŠธ์›Œํ‚น๊ณผ ํด๋ผ์ด์–ธํŠธ ๊ฐ„ ์ง์ ‘ ๋„คํŠธ์›Œํ‚น์„ ๋‹จ์ˆœํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋ฉฐ ๋„คํŠธ์›Œํฌ ์•”ํ˜ธํ™”, ์•”์ถ•, ํ๋ฆ„ ์ œ์–ด ๋“ฑ ๊ธฐ๋Šฅ์„..
[Book] ๊ฒŒ์ž„ ์„œ๋ฒ„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ต๊ณผ์„œ - 5์žฅ ๊ฒŒ์ž„ ๋„คํŠธ์›Œํ‚น
ยท
๐Ÿ“ Book/โœ Game Server
5์žฅ ๊ฒŒ์ž„ ๋„คํŠธ์›Œํ‚น 1. UML UML์€ ๋‹จ์ˆœํžˆ ํ”Œ๋กœ์ฐจํŠธ ๊ทธ ์ด์ƒ์˜ ์—ญํ• ์„ ํ•œ๋‹ค. ๋ฐ์ดํ„ฐ ์ •์˜์™€ ํ”„๋กœ์„ธ์Šค ์ •์˜๊ฐ€ ํŽธํ•ด์ง€๊ณ  ํ”„๋กœ๊ทธ๋žจ ๊ตฌ์กฐ ๋ช…์„ธ๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๋Œ€ํ‘œ์  ์ˆ˜๋‹จ์ด๋‹ค. 1) UML ์‹œํ€€์Šค ๋‹ค์ด์–ด๊ทธ๋žจ UML ์‹œํ€€์Šค ๋‹ค์ด์–ด๊ทธ๋žจ์€ ๊ฐ์ฒด์™€ ๋ฉ”์‹œ์ง€๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๊ฐ์ฒด ๊ฐ„ ๋ฉ”์‹œ์ง• ํ๋ฆ„์„ ์ผ๋ชฉ์š”์—ฐํ•˜๊ฒŒ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ฐ์ฒด๋Š” ์ƒํ˜ธ ์ž‘์šฉ์˜ ์ฃผ์ฒด(ํด๋ผ์ด์–ธํŠธ, ์„œ๋ฒ„)๋กœ ๋„ค๋ชจ ์ƒ์ž์— ํ•ด๋‹น๋œ๋‹ค. ๋ฉ”์‹œ์ง€๋Š” ์ƒํ˜ธ ์ž‘์šฉ์˜ ๋‚ด์šฉ์œผ๋กœ ๊ฐ€๋กœ ํ™”์‚ดํ‘œ์— ํ•ด๋‹น๋œ๋‹ค. 2) ์•กํ‹ฐ๋น„ํ‹ฐ ๋‹ค์ด์–ด๊ทธ๋žจ ์‹œํ€€์Šค ๋‹ค์ด์–ด๊ทธ๋žจ์€ ์ฃผ๊ณ ๋ฐ›์€ ๋ฉ”์‹œ์ง€๋ฅผ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋Š”์ง€ ์ž์„ธํ•˜๊ฒŒ ํ‘œํ˜„ํ•˜๊ธฐ์—” ํ•œ๊ณ„๊ฐ€ ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ ์‹œํ€€์Šค ๋‹ค์ด์–ด๊ทธ๋žจ์— ํ”Œ๋กœ์ฐจํŠธ๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด, ๋ณด๋‹ค ์ž์„ธํ•˜๊ฒŒ ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰ ๋ฐฉ์‹์„ ๊ทธ๋ฆผ์œผ๋กœ ๋ฌ˜์‚ฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค. ์ด๊ฒƒ์ด ์•กํ‹ฐ๋น„ํ‹ฐ ๋‹ค์ด์–ด๊ทธ๋žจ์ด๋‹ค. ์‹ค๋Ÿฐ๋” ๋„..