[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,..
[C++] ν¬μ†Œ ν…Œμ΄λΈ”(Sparse Table)
Β·
πŸ“ Computer Science/✏ Algorithm
ν¬μ†Œ ν…Œμ΄λΈ”(Sparse Table) 배열이 정적이어야 ν•œλ‹€. 즉, λ°°μ—΄ λ‚΄μš©μ΄ μˆ˜μ •λ˜λ©΄ μ•ˆ λœλ‹€. λ°°μ—΄μ˜ μ•„μ΄λ””μ–΄λŠ” λΆ„ν•  정볡과 λΉ„μŠ·ν•˜μ§€λ§Œ 더 λΉ λ₯΄λ‹€. κΈ°λ³Έ 원리 λͺ¨λ“  μ •μ μ˜ 간선이 1개인 유ν–₯ κ·Έλž˜ν”„κ°€ μ‘΄μž¬ν•  λ•Œ μ–΄λ–€ μ •μ μ—μ„œ μ‹œμž‘ν•΄ k번 이동을 ν•˜λ©΄ λ„μ°©ν•˜λŠ” 점은 μœ μΌν•˜λ‹€. μ΄λ•Œ kλ²ˆμ„ 일일이 맀번 따라가며 도착점을 계산할 μˆ˜λ„ μžˆκ² μ§€λ§Œ k값이 컀질수둝 μ‹œκ°„λ„ 였래 걸릴 것이닀. λ§Œμ•½ μ–΄λ–€ μ •μ μ˜ n번 μ΄λ™ν–ˆμ„ λ•Œ 도착점, 또 κ·Έ 도착점을 μ •μ λ§ˆλ‹€ λ‹€ κΈ°μ–΅ν•˜λŠ” 배열이 μžˆλ‹€λ©΄ 도착점을 맀우 효율적으둜 ꡬ할 수 μžˆμ„ 것이닀. κ·Έλ ‡λ‹€λ©΄ 이 배열은 μ–΄λ–»κ²Œ κ°€μ Έμ•Ό ν• κΉŒ? 1μΉΈ, 2μΉΈ, 4μΉΈ, 8μΉΈ, 16μΉΈ,... λ“± 2μ§„μˆ˜λ₯Ό μ΄μš©ν•΄ 2μ§„μˆ˜μ— ν•΄λ‹Ήν•˜λŠ” 이동 값을 λͺ¨λ‘ λ°°μ—΄λ‘œ λ§Œλ“ λ‹€. 그리고 이동 횟수 kλ₯Ό 2..