[Book] ๊ฒŒ์ž„ ์„œ๋ฒ„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ต๊ณผ์„œ - 1์žฅ ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋”ฉ (2)
ยท
๐Ÿ“ Book/โœ Game Server
1์žฅ ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋”ฉ 6. ์ž„๊ณ„ ์˜์—ญ๊ณผ ๋ฎคํ…์Šค ๊ฒฝ์Ÿ ์ƒํƒœ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ์—ฌ๋Ÿฌ ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๋Š” ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ๋Š” X๋ฅผ ๊ฑด๋“œ๋ฆฌ๋ ค๊ณ  ํ•˜๋ฉด ํ˜„์žฌ ์Šค๋ ˆ๋“œ๊ฐ€ X๋ฅผ ๋‹ค ์‚ฌ์šฉํ•  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋ฎคํ…์Šค(mutex)์ด๋‹ค. ๋ฎคํ…์Šค๋Š” ์ƒํ˜ธ ๋ฐฐ์ œ(mutual exclusion)์˜ ์ค„์ž„๋ง์ด๋‹ค. ๋ฎคํ…์Šค๋Š” ๋‹ค๋ฅธ ๋ง๋กœ ์ž„๊ณ„ ์˜์—ญ(critical section)์ด๋ผ๊ณ ๋„ ํ•œ๋‹ค. C++์—์„œ ๋ฎคํ…์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ์Šค๋ ˆ๋“œ 1์ด โ‘ก์—์„œ ๋ฎคํ…์Šค ์‚ฌ์šฉ๊ถŒ์„ ์–ป๋Š” ๋ฐ ์„ฑ๊ณตํ•˜๋ฉด โ‘ข์œผ๋กœ ๋„˜์–ด๊ฐ„๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ 2๊ฐ€ ์ด๋ฏธ ๋ฎคํ…์Šค ์‚ฌ์šฉ๊ถŒ์„ ์–ป์€ ์ƒํƒœ๋ฉด ์Šค๋ ˆ๋“œ 1์€ ๋” ์ด์ƒ ์ง„ํ–‰ํ•˜์ง€ ๋ชปํ•˜๊ณ  ์ •์ง€๋œ๋‹ค. ํ•œํŽธ ์Šค๋ ˆ๋“œ 2๋Š” โ‘ข์„ ์‹คํ–‰ ํ›„ โ‘ฃ๋ฅผ ํ†ต๊ณผํ•˜๊ฒŒ ๋˜๋Š”๋ฐ ๊ทธ์ œ์•ผ ์Šค๋ ˆ๋“œ 1์€ ๋ฎคํ…์Šค ์‚ฌ์šฉ๊ถŒ์„ ์–ป์–ด ์‹คํ–‰ ์ง€์ ์ด โ‘ข์œผ๋กœ ๋„˜์–ด..
[Book] ๊ฒŒ์ž„ ์„œ๋ฒ„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ต๊ณผ์„œ - 1์žฅ ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋”ฉ (1)
ยท
๐Ÿ“ Book/โœ Game Server
1์žฅ ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋”ฉ ๊ฒŒ์ž„ ์„œ๋ฒ„๋ฅผ ๊ฐœ๋ฐœํ•˜๋‹ค ๋ณด๋ฉด ํ•„์—ฐ์ ์œผ๋กœ ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•˜๊ฒŒ ๋œ๋‹ค. ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ๋กœ๋งŒ ์ž‘๋™ํ•˜๋Š” ๋น„๋™๊ธฐ ํ•จ์ˆ˜ ์ฝœ๋ฐฑ์ด๋‚˜ ์ฝ”๋ฃจํ‹ด์„ ์“ฐ๋”๋ผ๋„ ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋”ฉ์„ ์ดํ•ดํ•˜๊ณ  ์žˆ๋‹ค๋ฉด ๋”์šฑ ์œ ์šฉํ•˜๋‹ค. 1. ํ”„๋กœ๊ทธ๋žจ๊ณผ ํ”„๋กœ์„ธ์Šค ์šฐ๋ฆฌ๊ฐ€ ํ”ํžˆ ๋งํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์ด๋ž€ ์ปดํ“จํ„ฐ์—์„œ ์‹คํ–‰๋˜๋Š” ๋ช…๋ น์–ด ๋ชจ์Œ์ด ๋“ค์–ด์žˆ๋Š” ๋ฐ์ดํ„ฐ ๋ฉ์–ด๋ฆฌ๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ํ”„๋กœ๊ทธ๋žจ ๋ฉ”๋ชจ๋ฆฌ๋Š” ์ฝ”๋“œ(code)์™€ ๋ฐ์ดํ„ฐ(data)๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค. ํ”„๋กœ๊ทธ๋žจ์€ ๋””์Šคํฌ ๊ฐ™์€ ์ €์žฅ์†Œ์— ์กด์žฌํ•œ๋‹ค. ํ”„๋กœ์„ธ์Šค๋Š” ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋ฉด ๋ช…๋ น์–ด๊ฐ€ ํ•œ ์ค„์”ฉ ์‹คํ–‰๋˜๋ฉด์„œ ํ”„๋กœ๊ทธ๋žจ์€ ๋ญ”๊ฐ€ ํ™œ๋™์„ ํ•˜๋Š” ์ƒํƒœ๊ฐ€ ๋œ๋‹ค. ํ”„๋กœ์„ธ์Šค ๋ฉ”๋ชจ๋ฆฌ๋Š” ํ”„๋กœ๊ทธ๋žจ์—์„œ ๋กœ๋”ฉ๋œ ์ฝ”๋“œ์™€ ๋ฐ์ดํ„ฐ, ํž™(heap), ์Šคํƒ(stack)์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค. ์Šคํƒ์—๋Š” ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ํ•จ์ˆ˜๋“ค์˜ ..
[Unity] ์ƒ๋ช… ์ฃผ๊ธฐ(Life Cycle)
ยท
๐Ÿ“ Game/โœ Unity
์ƒ๋ช… ์ฃผ๊ธฐ(Life Cycle) ์œ ๋‹ˆํ‹ฐ ์Šคํฌ๋ฆฝํŠธ์˜ ๋Œ€๋ถ€๋ถ„์€ Monobehaviour ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์•„ ๋งŒ๋“ค์–ด์ง„๋‹ค. ์ด ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์€ ์˜ค๋ธŒ์ ํŠธ๋Š” Scene์— ์žˆ๋Š” ๋™์•ˆ ์—”์ง„์—์„œ ์ผ์ •ํ•œ ํ๋ฆ„์— ๋”ฐ๋ผ ์ž๋™์œผ๋กœ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š”๋ฐ, ์ด ํŒจํ„ด์˜ ํ๋ฆ„์„ ์ƒ๋ช… ์ฃผ๊ธฐ(Life Cycle)๋ผ ๋ถ€๋ฅธ๋‹ค. ์ „์ฒด ํ๋ฆ„ ์ „์ฒด์ ์ธ ํ๋ฆ„์€ ์•„๋ž˜ ๊ณต์‹ ์‚ฌ์ดํŠธ๋ฅผ ๋ณด๋ฉด ๋˜๋Š”๋ฐ, ๋„ˆ๋ฌด ๋ณต์žกํ•˜๊ณ  ๋งŽ์œผ๋‹ˆ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ํ•จ์ˆ˜๋“ค๋งŒ ์ •๋ฆฌํ•  ๊ฒƒ์ด๋‹ค. https://docs.unity3d.com/kr/530/Manual/ExecutionOrder.html ์œ ๋‹ˆํ‹ฐ - ๋งค๋‰ด์–ผ: ์ด๋ฒคํŠธ ํ•จ์ˆ˜์˜ ์‹คํ–‰ ์ˆœ์„œ ์ž๋™ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์ด๋ฒคํŠธ ํ•จ์ˆ˜์˜ ์‹คํ–‰ ์ˆœ์„œ Unity ์Šคํฌ๋ฆฝํŒ…์‹œ, ๋ฏธ๋ฆฌ ์ •์˜๋œ ์ˆœ์„œ๋Œ€๋กœ ์‹คํ–‰๋˜๋Š” ๋งŽ์€ ์ด๋ฒคํŠธ ํ•จ์ˆ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜์—์„œ๋Š”, ์‹ค..
[C++] ๋ฌธ์ž์—ด
ยท
๐Ÿ“ Computer Science/โœ Algorithm
๋ฌธ์ž์—ด 1. KMP ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ž์—ด ๊ฒ€์ƒ‰์„ ๋น ๋ฅด๊ฒŒ ๊ตฌํ•˜๊ธฐ ์œ„ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. 1) ๊ธฐ๋ณธ ์›๋ฆฌ ์ ‘๋‘์‚ฌ(prefix)์™€ ์ ‘๋ฏธ์‚ฌ(suffix)๋ฅผ ์ด์šฉํ•ด pi[i] ๋ฐฐ์—ด์„ ๊ตฌํ•œ ๋’ค ํ™œ์šฉํ•œ๋‹ค. pi[i] ๋ฐฐ์—ด์€ 0~i๊นŒ์ง€์˜ ๋ถ€๋ถ„ ๋ฌธ์ž์—ด์—์„œ prefix=suffix๊ฐ€ ๋  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„ ๋ฌธ์ž์—ด ์ค‘ ๊ฐ€์žฅ ๊ธด ๊ฒƒ์˜ ๊ธธ์ด์ด๋‹ค. ์ด๋•Œ, prefix๊ฐ€ 0~i๊นŒ์ง€์˜ ๋ถ€๋ถ„ ๋ฌธ์ž์—ด๊ณผ ๊ฐ™์œผ๋ฉด ์•ˆ ๋œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ฌธ์ž์—ด ABAABAB๋กœ pi[i] ๋ฐฐ์—ด์„ ๊ตฌํ•ด๋ณด์ž. i ๋ถ€๋ถ„ ๋ฌธ์ž์—ด (0~i) pi[i] 0 A 0 1 AB 0 2 ABA 1 3 ABAA 1 4 ABAAB 2 5 ABAABA 3 6 ABAABAB 2 ๊ทธ๋ ‡๋‹ค๋ฉด ์ด pi[i] ๋ฐฐ์—ด์„ ์–ด๋–ป๊ฒŒ ํ™œ์šฉํ•˜์—ฌ ๋ฌธ์ž์—ด ๊ฒ€์ƒ‰์„ ํšจ์œจ์ ์œผ๋กœ ํ•  ๊ฒƒ์ธ๊ฐ€? ๋ฌธ์ž์—ด ABCDABCDABEE์—์„œ ๋ฌธ์ž..
ํด๋ผ์šฐ๋“œ ์ปดํ“จํŒ…(Cloud Computing)๊ณผ AWS
ยท
๐Ÿ“ Computer Science/โœ Cloud Computing
1. ํด๋ผ์šฐ๋“œ ์ปดํ“จํŒ…(Cloud Computing) ์ธํ„ฐ๋„ท์„ ํ†ตํ•ด ์ „์‚ฐ ์ž์›(์„œ๋ฒ„, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ๋„คํŠธ์›Œํ‚น ๋“ฑ)์„ ๊ณต์œ ํ•˜๋Š” ๊ธฐ์ˆ ๊ณผ ๋„๊ตฌ์˜ ์ง‘ํ•ฉ์ด๋‹ค. ์–ด๋””์„œ๋“  ํ•˜๋Š˜์„ ๋ดค์„ ๋•Œ ๊ตฌ๋ฆ„(Cloud)์„ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ, ์–ด๋””์„œ๋“  ์ž์›์— ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋‹ค. 1) ์™œ ํด๋ผ์šฐ๋“œ ์ปดํ“จํŒ…์„ ์‚ฌ์šฉํ• ๊นŒ? 1. ๋น„์šฉ ์‚ฌ์šฉํ•œ ๋งŒํผ๋งŒ ์ง€๋ถˆํ•œ๋‹ค. ํ•˜๋“œ์›จ์–ด ๋ฐ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ตฌ์ž…ํ•˜๊ฑฐ๋‚˜ ์˜จ์‚ฌ์ดํŠธ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ๋ฅผ ์„ค์น˜ ๋ฐ ์šด์˜ํ•˜๋Š” ๋น„์šฉ์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰, ์ดˆ๊ธฐ ํˆฌ์ž ๋น„์šฉ ๋ฐ ์šด์˜ ๋น„์šฉ์„ ์ ˆ๊ฐํ•  ์ˆ˜ ์žˆ๋‹ค. 2. ์†๋„ ๋Œ€๋ถ€๋ถ„ ํด๋ผ์šฐ๋“œ ์ปดํ“จํŒ… ์„œ๋น„์Šค๋Š” ์ฃผ๋ฌธํ˜• ์…€ํ”„์„œ๋น„์Šค๋กœ ์ œ๊ณต๋œ๋‹ค. ๋”ฐ๋ผ์„œ ๊ธฐ์—…์— ๋งŽ์€ ์œ ์—ฐ์„ฑ์ด ์ œ๊ณต๋˜๋ฉฐ ๊ธฐ์—…์€ ์šฉ๋Ÿ‰ ๊ณ„ํš ๋ถ€๋‹ด์„ ๋œ ์ˆ˜ ์žˆ๋‹ค. 3. ๋›ฐ์–ด๋‚œ ํ™•์žฅ์„ฑ ํ•„์š”ํ•œ ๋•Œ์— ์ ์ ˆํ•œ ์ง€๋ฆฌ์  ์œ„์น˜์—์„œ ๋Œ€๋žต์ ์ธ ์ปดํ“จํ„ฐ ์„ฑ๋Šฅ, ์Šคํ† ๋ฆฌ์ง€..
[C++] ๋„คํŠธ์›Œํฌ ์œ ๋Ÿ‰(Network Flow)
ยท
๐Ÿ“ Computer Science/โœ Algorithm
๋„คํŠธ์›Œํฌ ์œ ๋Ÿ‰(Network Flow) ๊ทธ๋ž˜ํ”„ ๊ฐœ๋… ์ค‘ ํ•˜๋‚˜๋กœ ๋„คํŠธ์›Œํฌ ์œ ๋Ÿ‰์„ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด์„  ๋จผ์ € ์ƒˆ๋กœ์šด ์šฉ์–ด์™€ ์œ ๋Ÿ‰ ๊ทธ๋ž˜ํ”„์˜ ํŠน์ง•๋ถ€ํ„ฐ ์•Œ์•„์•ผ ํ•œ๋‹ค. ์œ ๋Ÿ‰ ๊ทธ๋ž˜ํ”„๋Š” ๋ณดํ†ต ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„์ธ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค. ๊ทธ๋ž˜ํ”„์˜ ๊ฐ„์„  ๊ฑฐ๋ฆฌ, ์‹œ๊ฐ„์ด๋‚˜ ๊ฐ€์ค‘์น˜ ๋Œ€์‹  ์šฉ๋Ÿ‰(Capacity)์ด๋ผ ํ•œ๋‹ค. ๋‘ ์ •์  u, v๋ฅผ ์žˆ๋Š” ๊ฐ„์„  (u, v)๊ฐ€ ์žˆ์„ ๋•Œ, u์—์„œ v๋กœ ๊ฐ„์„ ์˜ ์šฉ๋Ÿ‰ ์ดํ•˜๋งŒํผ์˜ ์œ ๋Ÿ‰(flow)์„ ํ˜๋ ค๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ž˜ํ”„ ๋‚ด ์„œ๋กœ ๋‹ค๋ฅธ ์†Œ์Šค(S, Source) ์ •์ ๊ณผ ์‹ฑํฌ(T, Sink) ์ •์ ์ด ์žˆ๋Š”๋ฐ, ์†Œ์Šค ์ •์ ์€ ์œ ๋Ÿ‰์„ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค. ์†Œ์Šค ์ •์  ์™ธ ์ •์ ๋“ค์€ ์ž์‹ ์ด ๋ฐ›์€ ์œ ๋Ÿ‰๋งŒํผ๋งŒ ๋‹ค์‹œ ํ˜๋ ค๋ณด๋‚ธ๋‹ค. ๊ฐ ๊ฐ„์„ ์— ํ๋ฅด๋Š” ์œ ๋Ÿ‰์€ ๊ทธ ๊ฐ„์„ ์˜ ์šฉ๋Ÿ‰์„ ๋„˜์„ ์ˆ˜ ์—†๋‹ค. ๊ฐ„์„  (u, v)๋กœ ์œ ๋Ÿ‰์ด ํ๋ฅด๊ณ  ์žˆ๋‹ค๋ฉด ์—ญ๋ฐฉํ–ฅ์ธ ๊ฐ„์„ (v,..