[Book] ν”„λ‘œκ·Έλž˜λ° λ©΄μ ‘ μ΄λ ‡κ²Œ μ€€λΉ„ν•œλ‹€
Β·
πŸ“ Book/✏
책을 읽으며 λ”°λ‘œ μ •λ¦¬ν•˜λ©΄ 쒋을 λ‚΄μš©λ§Œ μž‘μ„±ν•˜μ˜€λ‹€. 기술 면접을 μ€€λΉ„ν•˜λŠ” μ‚¬λžŒμ—κ²Œ μ „μ²΄μ μœΌλ‘œ λ‹€μ‹œ λ³΅μŠ΅ν•˜κΈ° 쒋은 책인 것 κ°™λ‹€. μΆ”μ²œ! 1. λΉ… 였 뢄석법 μž…λ ₯ κ°’μ˜ κ°œμˆ˜μ— 따라 μ•Œκ³ λ¦¬μ¦˜μ΄ μˆ˜ν–‰λ˜λŠ”λ° κ±Έλ¦¬λŠ” μ‹œκ°„μ„ λ°”νƒ•μœΌλ‘œ μ•Œκ³ λ¦¬μ¦˜ νš¨μœ¨μ„±μ„ ν‰κ°€ν•˜λŠ” μ‹€ν–‰ μ‹œκ°„ 뢄석법이닀. n이 맀우 큰 경우λ₯Ό κ°€μ •ν•˜κΈ° λ•Œλ¬Έμ— 점근적인 μ‹€ν–‰ μ‹œκ°„λ§Œ 따진닀. 즉 μ΅œκ³ μ°¨ν•­λ§Œ ν‘œμ‹œν•œλ‹€. μž…λ ₯ κ°’μ˜ 개수λ₯Ό n개둜 κ°€μ •ν•˜κ³  n개의 μž…λ ₯ 값을 λͺ‡ λ²ˆμ΄λ‚˜ 확인해야 ν•˜λŠ”μ§€λ₯Ό n의 μ‹μœΌλ‘œ ν‘œν˜„ν•œλ‹€. O(1): μƒμˆ˜ μ‹œκ°„ 내에 μˆ˜ν–‰λœλ‹€λŠ” 뜻으둜 μž…λ ₯의 κ°œμˆ˜μ™€ λ¬΄κ΄€ν•˜κ²Œ 항상 μΌμ •ν•œ μ‹œκ°„ μ•ˆμ— 싀행이 μ™„λ£Œλœλ‹€. O(n): μ„ ν˜• μ‹œκ°„ 내에 μˆ˜ν–‰λœλ‹€λŠ” 뜻으둜 μ•Œκ³ λ¦¬μ¦˜μ„ μ‹€ν–‰μ‹œν‚€λŠ”λ° κ±Έλ¦¬λŠ” μ‹œκ°„μ΄ μž…λ ₯된 ν•­λͺ©μ˜ κ°œμˆ˜μ— μ„ ν˜•μ μœΌλ‘œ λΉ„λ‘€ν•˜μ—¬ μ¦κ°€ν•œλ‹€...
λ©€ν‹° ν”„λ‘œμ„Έμ‹±, λ©€ν‹° ν”„λ‘œκ·Έλž˜λ°, λ©€ν‹° νƒœμŠ€ν‚Ή
Β·
πŸ“ Computer Science/✏ OS
CPU μ½”μ–΄μ˜ κ΄€μ μ—μ„œ μƒκ°ν•˜μ—¬ λΆ„λ₯˜ν•œλ‹€. 1. λ©€ν‹° ν”„λ‘œμ„Έμ‹±(Multi-processing) CPU μ½”μ–΄ μ—¬λŸ¬ 개둜 μ—¬λŸ¬ 개의 ν”„λ‘œμ„ΈμŠ€λ₯Ό μˆ˜ν–‰ν•˜λŠ” 것 λ©€ν‹° μ“°λ ˆλ”©(Multi-threading): ν•˜λ‚˜μ˜ ν”„λ‘œμ„ΈμŠ€ 내에 μ—¬λŸ¬ 개의 μŠ€λ ˆλ“œκ°€ μ‘΄μž¬ν•˜μ—¬ λ³‘λ ¬μ μœΌλ‘œ μ²˜λ¦¬ν•˜λŠ” 것 2. λ©€ν‹° ν”„λ‘œκ·Έλž˜λ°(Multi-programming) CPU μ½”μ–΄ ν•˜λ‚˜λ‘œ μ—¬λŸ¬ 개의 ν”„λ‘œμ„ΈμŠ€λ₯Ό μˆ˜ν–‰ν•˜λŠ” κ²ƒμœΌλ‘œ ν”„λ‘œμ„Έμ„œ μžμ›μ΄ λ‚­λΉ„λ˜λŠ” 것을 μ΅œμ†Œν™”ν•˜κΈ° μœ„ν•¨μ΄λ‹€. 3. λ©€ν‹° νƒœμŠ€ν‚Ή(Multi-tasking) λ‹€μˆ˜μ˜ Taskλ₯Ό 운영체제 μŠ€μΌ€μ€„λ§μ— μ˜ν•΄ λ²ˆκ°ˆμ•„ κ°€λ©΄μ„œ μˆ˜ν–‰ν•˜λŠ” κ²ƒμœΌλ‘œ μ΄λ•Œ TaskλŠ” ν”„λ‘œμ„ΈμŠ€λ³΄λ‹€ ν™•μž₯된 κ°œλ…μ΄λ‹€. ν”„λ‘œμ„Έμ„œκ°€ 각각의 Taskλ₯Ό 자주 λ²ˆκ°ˆμ•„κ°€λ©΄μ„œ μ²˜λ¦¬ν•˜λŠ”λ° μ‚¬μš©μžμ—κ²ŒλŠ” 마치 λ™μ‹œμ— μ—¬λŸ¬ Taskκ°€ μˆ˜ν–‰λ˜λŠ” κ²ƒμ²˜λŸΌ..
λ Œλ”λ§ νŒŒμ΄ν”„λΌμΈ
Β·
πŸ“ Game/✏ Computer Graphics
λ Œλ”λ§ νŒŒμ΄ν”„λΌμΈ 3D 세계에 λŒ€ν•œ κΈ°ν•˜ν•™μ  ν‘œν˜„κ³Ό 이 세계λ₯Ό λ°”λΌλ³΄λŠ” 관점을 μ •μ˜ν•˜λŠ” 가상 카메라λ₯Ό μ΄μš©ν•΄ 2D 이미지λ₯Ό λ§Œλ“€μ–΄λ‚΄λŠ” 과정이닀. 1) 3D λͺ¨λΈ ꡬ좕 (둜컬 슀페이슀) λͺ¨λΈλ§ 된 파일의 정보λ₯Ό 뢈러였고 둜컬 μ’Œν‘œκ³„λ₯Ό 톡해 3차원 λͺ¨λΈμ˜ 정점듀을 κ΅¬μΆ•ν•˜λŠ” 단계이닀. 둜컬(λͺ¨λΈ) μ’Œν‘œκ³„λŠ” λͺ¨λΈ ν•˜λ‚˜μ˜ 고유 μ’Œν‘œκ³„λ‘œ λͺ¨λΈ 뷰어와 같이 단일 개체λ₯Ό ν‘œν˜„ν•œλ‹€. 2) 가상곡간 배치 (μ›”λ“œ 슀페이슀) 뢈러온 3D λͺ¨λΈμ„ μ›”λ“œ μ’Œν‘œκ³„λ‘œ λ³€ν™˜ν•˜λŠ” 단계이닀. 둜컬 슀페이슀의 κ°œμ²΄λ“€μ„ μ›”λ“œ μ’Œν‘œκ³„λ‘œ λ³€ν™˜ν•˜λŠ”λ° 이동, νšŒμ „, 크기 λ³€ν™˜μ„ μ‘°ν•©ν•˜μ—¬ λ§Œλ“€μ–΄μ§„λ‹€. 3) 정점 λ‹¨μœ„μ˜ 음영 계산 정점 쉐이더λ₯Ό 톡해 각 μ λ“€μ˜ 음영(그림자)을 μ²˜λ¦¬ν•˜λŠ” 단계이닀. 정점 μ‰μ΄λ”λŠ” μ •μ μ˜ μœ„μΉ˜μ— λŒ€ν•œ 정보λ₯Ό μž…λ ₯으둜 λ°›μ•„ ν™”..
[C++] l-value와 r-value
Β·
πŸ“ Language/✏ C & C++
l-value와 r-value μ™Όμͺ½ κ°’, 였λ₯Έμͺ½ κ°’μ΄λž€ λ‹¨μ–΄μ˜ μ˜λ―ΈλŠ” 맀우 μ§κ΄€μ μœΌλ‘œ λ“±ν˜Έ(=)의 μ™Όμͺ½μ— 있으면 left value, 였λ₯Έμͺ½μ— 있으면 right value이닀. 1. l-value 이름을 가진 λ³€μˆ˜λ‘œ ν‘œν˜„μ‹ 이후에도 사라지지 μ•ŠλŠ”λ‹€. 2. r-value μž„μ‹œ λ³€μˆ˜λ‘œ ν‘œν˜„μ‹ 이후에 사라진닀. 1) x++이 μ™œ r-value일까? x의 값을 λ³΅μ‚¬ν•˜μ—¬ μž„μ‹œ λ³€μˆ˜(r-value)에 μ €μž₯ν•˜κ³  μ›λž˜ x의 κ°’(l-value)을 λ³€κ²½ν•œλ‹€. κ·Έ ν›„ μž„μ‹œ λ³€μˆ˜λ₯Ό 계산에 μ‚¬μš©ν•˜κΈ° λ•Œλ¬Έμ— r-value이닀. & μ—°μ‚°μžλŠ” l-value의 μ£Όμ†Œλ₯Ό κ°€μ Έμ˜€λŠ” μ—°μ‚°μžμ΄λ‹€. κ·Έλ ‡κΈ° λ•Œλ¬Έμ— & μ—°μ‚°μžλ₯Ό r-value에 μ‚¬μš©ν•˜λ©΄ 컴파일 μ—λŸ¬λ‚˜ λ‚œλ‹€.
μ•Œκ³ λ¦¬μ¦˜ μ„±λŠ₯ 뢄석
Β·
πŸ“ Computer Science/✏ Data Structure
μ•Œκ³ λ¦¬μ¦˜μ„ ν‰κ°€ν•˜λŠ” 데 μžˆμ–΄ μˆ˜ν–‰ μ‹œκ°„κ³Ό λ©”λͺ¨λ¦¬ μ‚¬μš©λŸ‰μ„ ν‰κ°€κΈ°μ€€μœΌλ‘œ λ‘λŠ”λ°, μˆ˜ν–‰ μ‹œκ°„μ— ν•΄λ‹Ήλ˜λŠ” 것이 μ‹œκ°„ λ³΅μž‘λ„, λ©”λͺ¨λ¦¬ μ‚¬μš©λŸ‰μ— ν•΄λ‹Ήλ˜λŠ” 것이 곡간 λ³΅μž‘λ„μ΄λ‹€. 보톡 μ•Œκ³ λ¦¬μ¦˜μ˜ μ„±λŠ₯ 뢄석은 λ³΅μž‘λ„λ₯Ό κ³„μ‚°ν•˜μ—¬ 점근적 ν‘œκΈ°λ²•μœΌλ‘œ λ‚˜νƒ€λ‚Έλ‹€. 점근적 뢄석 μž…λ ₯ κ°’μ˜ κ°œμˆ˜μ— 따라 μ•Œκ³ λ¦¬μ¦˜μ˜ μˆ˜ν–‰ μ‹œκ°„μ„ λ°”νƒ•μœΌλ‘œ μ•Œκ³ λ¦¬μ¦˜μ˜ νš¨μœ¨μ„±μ„ ν‰κ°€ν•œλ‹€. 1) λΉ…μ˜€ ν‘œκΈ°λ²• O 점근적 μƒν•œμ„ μœΌλ‘œ 점근적 μ¦κ°€μœ¨μ΄ f(N)을 λ„˜μ§€ μ•ŠλŠ” λͺ¨λ“  ν•¨μˆ˜λ“€μ˜ 집합이닀. 즉, 졜고 μ°¨ν•­μ˜ μ°¨μˆ˜κ°€ f(N)κ³Ό κ°™κ±°λ‚˜ 더 μž‘μ€ ν•¨μˆ˜λ“€μ˜ 집합이닀. f(N)
[C/C++] malloc()과 new의 차이
Β·
πŸ“ Language/✏ C & C++
malloc()κ³Ό new의 차이 1. ν•¨μˆ˜μ™€ μ—°μ‚°μž Cμ—μ„œλŠ” 동적 할당을 μœ„ν•΄ malloc()κ³Ό free() ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•œλ‹€. C++μ—μ„œλŠ” 동적 할당을 μœ„ν•΄ new와 delete μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•œλ‹€. λ‹¨μˆœν•˜κ²Œ malloc()은 ν•¨μˆ˜μ΄κ³  newλŠ” μ—°μ‚°μžμ΄λ‹€. 그리고 malloc()은 λΌμ΄λΈŒλŸ¬λ¦¬κ°€ μ œκ³΅ν•˜λŠ” ν•¨μˆ˜μ΄μ§€λ§Œ newλŠ” λ³„λ„μ˜ 라이브러리 없이 μ‚¬μš©μ΄ κ°€λŠ₯ν•˜λ‹€. 2. μ΄ˆκΈ°ν™” malloc()은 동적 ν• λ‹Ήν•˜λŠ” κ²ƒλ§Œμ΄ λͺ©μ μ΄λ―€λ‘œ μ΄ˆκΈ°ν™”λ₯Ό ν•  수 μ—†λ‹€. newλŠ” ν• λ‹Ήκ³Ό λ™μ‹œμ— μ΄ˆκΈ°ν™”κ°€ κ°€λŠ₯ν•˜λ‹€ 3. μƒμ„±μž newλŠ” μƒμ„±μžλ₯Ό μžλ™μœΌλ‘œ ν˜ΈμΆœν•˜κ²Œ λœλ‹€. λ§ˆμ°¬κ°€μ§€λ‘œ deleteλ₯Ό ν˜ΈμΆœν•˜λ©΄ μ†Œλ©Έμžκ°€ μžλ™μœΌλ‘œ ν˜ΈμΆœλœλ‹€.