[Book] ν΄λ¦°μ½”λ“œ - 1μž₯ κΉ¨λ—ν•œ μ½”λ“œ, 2μž₯ 의미 μžˆλŠ” 이름
Β·
πŸ“ Book/✏ Clean Code
1μž₯ κΉ¨λ—ν•œ μ½”λ“œ κΉ¨λ—ν•œ μ½”λ“œλž€? 이 단어에 λŒ€ν•œ λ‹€μ–‘ν•œ μ •μ˜κ°€ μ‘΄μž¬ν•˜λŠ”λ° μ•„λž˜λŠ” 우리 λΆ„μ•Όμ—μ„œ 유λͺ…ν•œ ν”„λ‘œκ·Έλž˜λ¨Έλ“€μ΄ λ§ν•œ μ •μ˜μ΄λ‹€. μš°μ•„ν•˜λ‹€: λ³΄λŠ” μ‚¬λžŒμ—κ²Œ 즐거움을 μ„ μ‚¬ν•œλ‹€. νš¨μœ¨μ μ΄λ‹€: λ‹¨μˆœνžˆ μ†λ„λ§Œμ„ λœ»ν•˜μ§€ μ•Šκ³  CPU μžμ› λ“± λ§Žμ€ 것을 λœ»ν•œλ‹€. μ² μ €ν•œ 였λ₯˜ μ²˜λ¦¬κ°€ ν•„μš”ν•˜λ‹€: λ©”λͺ¨λ¦¬ λˆ„μˆ˜, 경쟁 μƒνƒœ, 일관성 μ—†λŠ” λͺ…λͺ…법 등을 μ‘°μ‹¬ν•˜μž. ν•œ 가지λ₯Ό μž˜ν•œλ‹€: λ‚˜μœ μ½”λ“œλŠ” λ„ˆλ¬΄ λ§Žμ„ 일을 ν•˜λ €λ‹€ μ˜λ„κ°€ λ’€μ„žμ΄μ§€λ§Œ κΉ¨λ—ν•œ μ½”λ“œλŠ” ν•œ 가지에 μ§‘μ€‘ν•œλ‹€. 가독성이 μ’‹λ‹€: 잘 μ“΄ λ¬Έμž₯처럼 μ½ν˜€μ•Ό ν•œλ‹€. λ‹€λ₯Έ μ‚¬λžŒμ΄ 고치기 쉽닀. 주의 깊게 μ§°λ‹€λŠ” λŠλ‚Œμ„ μ€€λ‹€. μž‘κ²Œ μΆ”μƒν™”ν•œλ‹€. 쀑볡이 μ—†λ‹€. 2μž₯ 의미 μžˆλŠ” 이름 λ³€μˆ˜, ν•¨μˆ˜, μΈμˆ˜μ™€ 클래슀, μ†ŒμŠ€ 파일, μ†ŒμŠ€ 파일 λ‚΄ 디렉터리 λ“± μ†Œν”„νŠΈμ›¨μ–΄μ—μ„œ 이름은 μ–΄λ””..
[Book] Effective C# - CHAPTER 3 μ œλ„€λ¦­ ν™œμš©
Β·
πŸ“ Book/✏ Effective
μ œλ„€λ¦­μ€ μ»¬λ ‰μ…˜ 외에도 μΈν„°νŽ˜μ΄μŠ€, 이벀트 ν•Έλ“€λŸ¬, 곡톡 μ•Œκ³ λ¦¬μ¦˜ κ΅¬ν˜„ λ“± 맀우 λ‹€μ–‘ν•œ λΆ„μ•Όμ—μ„œ ν™œμš©λœλ‹€. μ•„μ΄ν…œ 18. λ°˜λ“œμ‹œ ν•„μš”ν•œ μ œμ•½ 쑰건만 μ„€μ •ν•˜λΌ νƒ€μž… λ§€κ°œλ³€μˆ˜μ— λŒ€ν•œ μ œμ•½ 쑰건은 ν΄λž˜μŠ€κ°€ μž‘μ—…μ„ μ˜¬λ°”λ₯΄κ²Œ μˆ˜ν–‰ν•˜κΈ° μœ„ν•΄μ„œ νƒ€μž… λ§€κ°œλ³€μˆ˜λ‘œ 전달할 수 μžˆλŠ” νƒ€μž…μ˜ μœ ν˜•μ„ μ œν•œν•˜λŠ” 방법이닀. μ œμ•½ 쑰건은 μ œλ„€λ¦­ νƒ€μž…μ— λŒ€ν•΄ μš°λ¦¬κ°€ κ°€μ •ν•˜κ³  μžˆλŠ” 사싀을 μ»΄νŒŒμΌλŸ¬μ™€ λ‹€λ₯Έ κ°œλ°œμžμ—κ²Œ μ•Œλ €μ£ΌλŠ” μš©λ„λ‘œ μ‚¬μš©λœλ‹€. μ»΄νŒŒμΌλŸ¬λŠ” νƒ€μž… λ§€κ°œλ³€μˆ˜λ‘œ μ „λ‹¬λœ νƒ€μž…μ΄ μ œμ•½ 쑰건으둜 μ„€μ •ν•œ κΈ°λŠ₯을 λͺ¨λ‘ κ΅¬ν˜„ν•˜κ³  μžˆμ„ 것이라 κ°€μ •ν•  수 μžˆλ‹€. μ»΄νŒŒμΌλŸ¬λŠ” μ œλ„€λ¦­ νƒ€μž…μ„ μ‚¬μš©ν•˜λŠ” μ‚¬μš©μžκ°€ νƒ€μž… λ§€κ°œλ³€μˆ˜λ‘œ μ˜¬λ°”λ₯Έ νƒ€μž…μ„ μ§€μ •ν–ˆλŠ”μ§€ 컴파일 νƒ€μž„μ— 확인할 수 μžˆλ‹€. μ œμ•½ 쑰건을 μ„€μ •ν•˜λŠ” λŒ€μ‹  ν˜•λ³€ν™˜μ΄λ‚˜ λŸ°νƒ€μž„μ— ν…ŒμŠ€νŠΈλ₯Ό μˆ˜ν–‰ν•˜λ„λ‘ μž‘..
[Book] Effective C# - CHAPTER 2 .NET λ¦¬μ†ŒμŠ€ 관리
Β·
πŸ“ Book/✏ Effective
μ•„μ΄ν…œ 11. .NET λ¦¬μ†ŒμŠ€ 관리에 λŒ€ν•œ 이해 .NET ν™˜κ²½μ—μ„œλŠ” νŠΉλ³„νžˆ λ©”λͺ¨λ¦¬ 관리와 가비지 μˆ˜μ§‘κΈ°μ˜ λ™μž‘ 방식을 μ΄ν•΄ν•˜λŠ” 것이 μ€‘μš”ν•˜λ‹€. 가비지 μˆ˜μ§‘κΈ°(Garbage Collector)λŠ” κ΄€λ¦¬λ˜λŠ” λ©”λͺ¨λ¦¬λ₯Ό κ΄€μž₯ν•˜λ©° λ„€μ΄ν‹°λΈŒ ν™˜κ²½κ³ΌλŠ” λ‹€λ₯΄κ²Œ λ©”λͺ¨λ¦¬ λˆ„μˆ˜, λŒ•κΈ€λ§ 포인터, μ΄ˆκΈ°ν™”λ˜μ§€ μ•Šμ€ 포인터, μ—¬νƒ€μ˜ λ©”λͺ¨λ¦¬ 관리 문제λ₯Ό κ°œλ°œμžλ“€μ΄ 직접 닀루지 μ•Šλ„λ‘ μžλ™ν™”ν•΄μ€€λ‹€. λ°μ΄ν„°λ² μ΄μŠ€ μ—°κ²°, COM 객체, μ‹œμŠ€ν…œ 객체 λ“±κ³Ό 같은 비관리 λ¦¬μ†ŒμŠ€λŠ” μ—¬μ „νžˆ κ°œλ°œμžκ°€ 관리해야 ν•œλ‹€. μˆœν™˜ 참쑰의 λ¬Έμ œλ‚˜ λ³΅μž‘ν•œ μ—°κ΄€ κ΄€κ³„μ˜ λ¬Έμ œλ„ 관리 ν™˜κ²½μ—μ„œλŠ” 비ꡐ적 μ‰½κ²Œ κ΅¬ν˜„ν•  수 μžˆλ‹€. 가비지 μˆ˜μ§‘κΈ°μ˜ λ™μž‘ 방식 마크/콀팩트 μ•Œκ³ λ¦¬μ¦˜μ€ μ—¬λŸ¬ 객체 μ‚¬μ΄μ˜ μ—°κ΄€ 관계λ₯Ό 효율적으둜 νŒŒμ•…ν•˜μ—¬ 더 이상 μ‚¬μš©λ˜μ§€ μ•ŠλŠ” 객체λ₯Ό μžλ™μœΌλ‘œ 제..
[C++] μ΅œμ†Œ μ‹ μž₯ 트리(크루슀칼)
Β·
πŸ“ Computer Science/✏ Algorithm
μ΅œμ†Œ μ‹ μž₯ 트리(Minimum Spanning Tree) λͺ¨λ“  정점을 μ—°κ²°ν•˜λŠ” 트리λ₯Ό μ‹ μž₯ 트리라고 ν•˜λŠ”λ° κ°€μ€‘μΉ˜λ₯Ό κ°–λŠ” μ‹ μž₯ 트리 쀑 κ°€μ€‘μΉ˜μ˜ 합이 κ°€μž₯ μž‘μ€ μ‹ μž₯ 트리λ₯Ό μ΅œμ†Œ μ‹ μž₯ 트리라고 ν•œλ‹€. λŒ€ν‘œμ μœΌλ‘œ 크루슀칼 μ•Œκ³ λ¦¬μ¦˜μ΄ 있으며, κ·Έ 외에도 ν”„λ¦Ό μ•Œκ³ λ¦¬μ¦˜κ³Ό 솔린 μ•Œκ³ λ¦¬μ¦˜μ΄ μžˆλ‹€. ν”„λ¦Ό μ•Œκ³ λ¦¬μ¦˜: μž„μ˜μ˜ 정점을 루트 λ…Έλ“œλ‘œ μ‚½μž…ν•œ ν›„ μΈμ ‘ν•œ μ •μ μ˜ κ°„μ„  쀑 κ°€μž₯ μž‘μ€ 정점을 νŠΈλ¦¬μ— μ‚½μž…ν•˜λ©° μ΅œμ†Œ μ‹ μž₯ 트리λ₯Ό λ§Œλ“ λ‹€. 솔린 μ•Œκ³ λ¦¬μ¦˜ 1. 크루슀칼 μ•Œκ³ λ¦¬μ¦˜(Kruskal's algorithm) 1) κΈ°λ³Έ 원리 λͺ¨λ“  κ°„μ„ μ˜ κ°€μ€‘μΉ˜λ₯Ό μ˜€λ¦„μ°¨μˆœμœΌλ‘œ μ •λ ¬ν•œ ν›„ κ·Έ λͺ©λ‘μ„ μ°¨λ‘€λŒ€λ‘œ μˆœνšŒν•˜λ©° 사이클이 생기지 μ•Šλ„λ‘ μ΅œμ†Œ μ‹ μž₯ νŠΈλ¦¬μ— μ‚½μž…ν•˜λ©° μ΅œμ†Œ μ‹ μž₯ 트리λ₯Ό λ§Œλ“ λ‹€. 2) 문제 www.acmicpc.net/pr..
[C++] μ„Έκ·Έλ¨ΌνŠΈ 트리(Segment Tree)
Β·
πŸ“ Computer Science/✏ Algorithm
μ„Έκ·Έλ¨ΌνŠΈ 트리(Segment Tree) λ°°μ—΄ λ‚΄ λ²”μœ„ 값을 κ΅¬ν•˜κ±°λ‚˜ νŠΉμ • λ²”μœ„μ˜ 값듀을 λ³€κ²½ν•  λ•Œ λΉ λ₯΄κ²Œ μ ‘κ·Όν•˜κΈ° μœ„ν•΄ μ‚¬μš©ν•œλ‹€. 이름 κ·ΈλŒ€λ‘œ ꡬ간듀을 λ³΄μ‘΄ν•˜κ³  μžˆλŠ” νŠΈλ¦¬μ΄λ‹€. 리프 λ…Έλ“œλŠ” λ°°μ—΄μ˜ κ·Έ 수 자체λ₯Ό μ˜λ―Έν•˜κ³  리프 λ…Έλ“œ μ™Έ λ…Έλ“œλ“€μ€ μžμ‹ λ…Έλ“œλ₯Ό λŒ€ν‘œν•˜λŠ” 값이닀. 리프 λ…Έλ“œλ₯Ό μ œμ™Έν•œ λ…Έλ“œλŠ” λΉ„μ›Œμ ΈμžˆλŠ”λ°, μ„Έκ·Έλ¨ΌνŠΈ 트리의 λͺ©μ μ— 따라 μ±„μ›Œμ•Όν•œλ‹€. κΈ°λ³Έ 원리 : ν•© https://www.acmicpc.net/blog/view/9 μ„Έκ·Έλ¨ΌνŠΈ 트리 (Segment Tree) 문제 λ°°μ—΄ Aκ°€ 있고, μ—¬κΈ°μ„œ λ‹€μŒκ³Ό 같은 두 연산을 μˆ˜ν–‰ν•΄μ•Όν•˜λŠ” 문제λ₯Ό μƒκ°ν•΄λ΄…μ‹œλ‹€. ꡬ간 l, r (l ≤ r)이 μ£Όμ–΄μ‘Œμ„ λ•Œ, A[l] + A[l+1] + ... + A[r-1] + A[r]을 κ΅¬ν•΄μ„œ 좜λ ₯ν•˜κΈ° i번째 수λ₯Ό v둜 ..
[Book] Effective C# - CHAPTER 1 C# μ–Έμ–΄μš”μ†Œ
Β·
πŸ“ Book/✏ Effective
μ•„μ΄ν…œ 1. μ§€μ—­λ³€μˆ˜λ₯Ό μ„ μ–Έν•  λ•ŒλŠ” varλ₯Ό μ‚¬μš©ν•˜λŠ” 것이 λ‚«λ‹€. var ν‚€μ›Œλ“œλŠ” μ•”μ‹œμ  νƒ€μž…μ˜ μ§€μ—­λ³€μˆ˜λ₯Ό μ„ μ–Έν•  λ•Œ μ‚¬μš©ν•˜λŠ”λ° λŒ€μž…λœ κ°’μ˜ νƒ€μž…μœΌλ‘œ κ²°μ •λœλ‹€. μ§€μ—­λ³€μˆ˜μ—λ§Œ μ‚¬μš©μ΄ κ°€λŠ₯ν•˜κ³  μ„ μ–Έκ³Ό λ™μ‹œμ— μ΄ˆκΈ°ν™”λ₯Ό ν•΄μ•Ό ν•œλ‹€. μ •ν™•ν•œ λ°˜ν™˜ νƒ€μž…μ„ μ•Œμ§€ λͺ»ν•œ 채 μ˜¬λ°”λ₯΄μ§€ μ•Šμ€ νƒ€μž…μ„ λͺ…μ‹œμ μœΌλ‘œ μ§€μ •ν•˜λŠ” 경우λ₯Ό λ°©μ§€ν•œλ‹€. ex) IQueryable λ₯Ό IEnumerable 둜 κ°•μ œ ν˜•λ³€ν™˜ νƒ€μž…μ„ μœ μΆ”ν•  수 μžˆλŠ” λ³€μˆ˜ 이름을 μ‚¬μš©ν•˜μ—¬ μ½”λ“œμ˜ 가독성을 높일 수 μžˆλ‹€. κ·ΈλŸ¬λ‚˜... 정적 타이핑을 ν›Όμ†μ‹œν‚¨λ‹€: 동적 타이핑이 μˆ˜ν–‰λ˜λŠ” 것이 μ•„λ‹ˆλΌ μ»΄νŒŒμΌλŸ¬κ°€ νƒ€μž…μ„ μΆ”λ‘ ν•˜μ—¬ κ²°μ •ν•œλ‹€. κ³Όλ„ν•œ μ‚¬μš©μœΌλ‘œ μ½”λ“œμ˜ 가독성을 ν•΄μΉ˜κ±°λ‚˜ λ°œκ²¬ν•˜κΈ° μ–΄λ €μš΄ 버그λ₯Ό λ§Œλ“€μ–΄ λ‚Ό 수 μžˆλ‹€. κ°œλ°œμžκ°€ μƒκ°ν•œ νƒ€μž…κ³Ό μ»΄νŒŒμΌλŸ¬κ°€ μΆ”λ‘ ν•œ νƒ€μž…μ΄ 달..