๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์ „์ฒด๋ณด๊ธฐ114

[C++] 20. ๋ฉ€ํ‹ฐ ์Šค๋ ˆ๋“œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ(Multi-Threads) ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ(Multi-Threads) ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ํ•˜๋‚˜์˜ ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋žจ ์•ˆ์—์„œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์‹คํ–‰ ํ๋ฆ„์ธ ์Šค๋ ˆ๋“œ(thread)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณ‘๋ ฌ๋กœ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ๋ฒ•์ž…๋‹ˆ๋‹ค. ๊ฐ„๋‹จํžˆ ๋งํ•ด์„œ, ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ž‘์€ "๋ถ€๋ถ„ ์ž‘์—…"์„ ๋™์‹œ์— ์‹คํ–‰ํ•˜์—ฌ ์ „์ฒด ์ž‘์—…์„ ๋” ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ์ฃผ์š” ๊ฐœ๋…์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค: 1. ์Šค๋ ˆ๋“œ (Thread): ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰ ํ๋ฆ„์„ ๋‚˜ํƒ€๋‚ด๋Š” ํ•˜๋‚˜์˜ ๋‹จ์œ„๋กœ, ๋™์‹œ์— ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์—ฌ๋Ÿฌ ์ž‘์—…์„ ๋™์‹œ์— ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 2. ๋ณ‘๋ ฌ์„ฑ (Concurrency): ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ๋Š” ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๊ฐ€ ๋™์‹œ์— ์‹คํ–‰๋˜์ง€๋งŒ, ์‹ค์ œ๋กœ ๋™์‹œ์— ์‹คํ–‰๋˜๋Š” ๊ฒƒ์€ ํ”„๋กœ์„ธ์„œ์˜ ๋ฌผ๋ฆฌ์  ํ•œ๊ณ„ ๋•Œ๋ฌธ์— ์ œํ•œ๋  ์ˆ˜ .. 2023. 8. 18.
์„ ํ˜• ์ž๋ฃŒ๊ตฌ์กฐ(Linear Data Structure) ์„ ํ˜• ์ž๋ฃŒ๊ตฌ์กฐ(Linear Data Structure) ์„ ํ˜• ์ž๋ฃŒ๊ตฌ์กฐ๋Š” ๋ฐ์ดํ„ฐ ์š”์†Œ๋“ค์ด ์ผ๋ ฌ๋กœ ๋ฐฐ์น˜๋˜์–ด ์žˆ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ž๋ฃŒ๊ตฌ์กฐ์—์„œ ๋ฐ์ดํ„ฐ ์š”์†Œ๋Š” ์ˆœ์„œ๋ฅผ ๊ฐ€์ง€๋ฉฐ, ๊ฐ๊ฐ์˜ ์š”์†Œ๋Š” ๋ฐ”๋กœ ์ด์ „ ์š”์†Œ์™€ ๋ฐ”๋กœ ๋‹ค์Œ ์š”์†Œ์™€ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์„ ํ˜• ์ž๋ฃŒ๊ตฌ์กฐ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ์ ‘๊ทผํ•˜๊ณ  ์กฐ์ž‘ํ•˜๋Š”๋ฐ ์œ ์šฉํ•˜๋ฉฐ, ๊ฐ„๋‹จํ•œ ๊ตฌ์กฐ๋กœ์„œ ๋‹ค์–‘ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ์‘์šฉ ๋ถ„์•ผ์—์„œ ํ™œ์šฉ๋ฉ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์„ ํ˜• ์ž๋ฃŒ๊ตฌ์กฐ์˜ ์˜ˆ์‹œ์™€ ํŠน์ง•์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค 1. ๋ฐฐ์—ด (Array) - ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ์„ ํ˜• ์ž๋ฃŒ๊ตฌ์กฐ๋กœ, ๋™์ผํ•œ ๋ฐ์ดํ„ฐ ํƒ€์ž…์˜ ์š”์†Œ๋“ค์„ ์ˆœ์ฐจ์ ์œผ๋กœ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. - ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ ์š”์†Œ์— ์ ‘๊ทผํ•˜๊ณ , ํŠน์ • ์œ„์น˜์— ์š”์†Œ๋ฅผ ์‚ฝ์ž…, ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. - ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰๊ณผ ์ ‘๊ทผ์ด ๋น ๋ฅด์ง€๋งŒ, ์ค‘๊ฐ„์— ์š”์†Œ๋ฅผ ์‚ฝ์ž…ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•  ๊ฒฝ์šฐ .. 2023. 8. 11.
์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ๋ฐฐ์›Œ์•ผ ํ•˜๋Š” ์ด์œ  ์˜ค๋Š˜์€ ๊ณ ๋ฆฌํƒ€๋ถ„ํ•œ ์ด์•ผ๊ธฐ๋กœ ์‹œ์ž‘ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ž๋ฃŒ๊ตฌ์กฐ๋Š” ์™œ ๋ฐฐ์›Œ์•ผ ํ• ๊นŒ์š”? ์‚ฌ์‹ค ์šฐ๋ฆฌ๋Š” ์‹ค๋ฌด์—์„œ ๊ฐœ๋ฐœํ•˜๊ฑฐ๋‚˜, ๋‚ด๊ฐ€ ์–ด๋–ค ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“ค ๋•Œ ์ฝ”๋“œ ์ƒ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ง์ ‘ ๋งŒ๋“ค ์ผ์ด ๋งŽ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์–ธ์–ด์™€ ํ”„๋ ˆ์ž„์›Œํฌ ์ฐจ์›์—์„œ ์ œ๊ณตํ•ด์ฃผ๋Š” ๊ฒƒ์ด ์˜คํžˆ๋ ค ๋” ์•ˆ์ „ํ•˜๊ณ  ์‹ ๋ขฐ๋„๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ž๋ฃŒ๊ตฌ์กฐ์˜ ๋™์ž‘ ์›๋ฆฌ๋ฅผ ๋ชจ๋ฅธ๋‹ค๋ฉด, ๋ฐ์ดํ„ฐ๊ฐ€ ์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ ์ „ํ˜€ ๊ฐ์กฐ์ฐจ ์žก์„ ์ˆ˜๋„ ์—†์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒผ์„ ๊ฒฝ์šฐ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๋Šฅ๋ ฅ์ด ์ œ๋กœ์— ๊ฐ€๊น๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ๋ฐฐ์šฐ๋ฉด ์ปดํ“จํ„ฐ์˜ ๋™์ž‘์›๋ฆฌ์™€ ํ•จ๊ป˜ ๋ฉ”๋ชจ๋ฆฌ ์ฒด๊ณ„๋ฅผ ์ดํ•ดํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ์ปดํ“จํ„ฐ๊ณตํ•™ ๊ณผ๋ชฉ์— ์ž๋ฃŒ๊ตฌ์กฐ๊ฐ€ ์žˆ๋Š” ๊ฒƒ์ด์ฃ . ์•„๋ž˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์˜ ์ค‘์š”์„ฑ์— ๋Œ€ํ•ด ์ •๋ฆฌํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค. ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ๋ฐฐ์›Œ์•ผ ํ•˜๋Š” ์ด์œ ๋Š” ์ปด.. 2023. 8. 11.
[git] Git rebase(๋ฆฌ๋ฒ ์ด์Šค)๋ž€? git rebase๋ž€? git rebase๋Š” Git ๋ฒ„์ „ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ช…๋ น์–ด ์ค‘ ํ•˜๋‚˜๋กœ, ์ฝ”๋“œ์˜ ๋ณ€๊ฒฝ ์ด๋ ฅ์„ ์žฌ๊ตฌ์„ฑํ•˜๊ฑฐ๋‚˜ ๋ธŒ๋žœ์น˜๋ฅผ ํ•ฉ์น  ๋•Œ ์ฃผ๋กœ ํ™œ์šฉ๋ฉ๋‹ˆ๋‹ค. git rebase๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ธŒ๋žœ์น˜๋ฅผ ์ด๋™ํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ๋ธŒ๋žœ์น˜์˜ ๋ณ€๊ฒฝ ๋‚ด์šฉ์„ ํ˜„์žฌ ๋ธŒ๋žœ์น˜์— ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ git rebase๋Š” ๋‘ ๊ฐœ์˜ ์ปค๋ฐ‹์„ ์„ ํƒํ•˜์—ฌ ์ด๋ ฅ์„ ์žฌ๊ตฌ์„ฑํ•˜๋Š” ์ž‘์—…์ž…๋‹ˆ๋‹ค. ๋” ์ž์„ธํ•œ ์„ค๋ช…์„ ์œ„ํ•ด ๋‹ค์Œ์˜ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. 1. ๊ธฐ๋ณธ ๊ฐœ๋… - Git์€ ์ปค๋ฐ‹ ๊ทธ๋ž˜ํ”„๋ฅผ ์‚ฌ์šฉํ•ด ๋ณ€๊ฒฝ ์ด๋ ฅ์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ์ปค๋ฐ‹์€ ๋ถ€๋ชจ ์ปค๋ฐ‹์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ๋ฅผ ๊ฐ–๊ณ  ์žˆ์œผ๋ฉฐ, ๋ธŒ๋žœ์น˜๋Š” ์ด๋Ÿฌํ•œ ์ปค๋ฐ‹์˜ ํฌ์ธํ„ฐ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ ˆํผ๋Ÿฐ์Šค์ž…๋‹ˆ๋‹ค. 2. ๋ธŒ๋žœ์น˜ ์ด๋™ - ๋ธŒ๋žœ์น˜ A์—์„œ ์ž‘์—…ํ•˜๋˜ ์ค‘ ๋ธŒ๋žœ์น˜ B์˜ ๋ณ€๊ฒฝ ๋‚ด์šฉ์„ ๋ฐ˜์˜ํ•˜๊ณ  ์‹ถ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด.. 2023. 8. 10.
[git] .gitignore ์ ์šฉ ์•ˆ๋  ๋•Œ ๊ฐ€๋”์”ฉ ํŠน์ • ๋””๋ ‰ํ† ๋ฆฌ๋‚˜ ํŒŒ์ผ์„ .gitignore์— ์ ์šฉํ•ด๋„ ๋ฐ”๋กœ ์ ์šฉ ์•ˆ๋  ๋•Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. git ์บ์‹œ๊ฐ€ ๋‚จ์•„์žˆ์–ด์„œ ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์บ์‹œ ์‚ญ์ œ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. git rm -r --cached . git add . ์—ฌ๊ธฐ๊นŒ์ง€ ์ง„ํ–‰ํ•˜๋ฉด .gitignore์— ์ ์šฉํ•œ ๋””๋ ‰ํ† ๋ฆฌ๋‚˜ ํŒŒ์ผ์ด ์ œ๋Œ€๋กœ ์ ์šฉ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. git status๋ฅผ ํ†ตํ•ด ํŒŒ์ผ๋“ค์ด ์ œ๋Œ€๋กœ ์ถ”์  ์ค‘์ธ์ง€ ํ™•์ธํ•ด๋ณด์„ธ์š”! ์ดํ›„์—, git commit -m "Fixed gitignore" ์›ํ•˜๋Š” ์ปค๋ฐ‹์„ ํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค~ 2023. 8. 10.
[C++] 19. ์—ฐ์‚ฐ์ž ์˜ค๋ฒ„๋กœ๋”ฉ(Operator Overloading) ์—ฐ์‚ฐ์ž ์˜ค๋ฒ„๋กœ๋”ฉ(Operator Overloading) ์—ฐ์‚ฐ์ž ์˜ค๋ฒ„๋กœ๋”ฉ์€ ์‚ฌ์šฉ์ž ์ •์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…์— ๋Œ€ํ•ด ๊ธฐ์กด์˜ ์—ฐ์‚ฐ์ž๋ฅผ ์ƒˆ๋กœ ์ •์˜ํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ์ฆ‰ ์—ฐ์‚ฐ์ž(+, -, /, *, ++, --, =, ==, , = ๋“ฑ)๋ฅผ ๋‚ด๋งˆ์Œ๋Œ€๋กœ ์žฌ์ •์˜ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž๊ฐ€ ์ •์˜ํ•œ ํด๋ž˜์Šค๋‚˜ ๊ตฌ์กฐ์ฒด์— ๋Œ€ํ•ด ์‚ฐ์ˆ  ์—ฐ์‚ฐ, ๋น„๊ต ์—ฐ์‚ฐ ๋“ฑ์˜ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฐ์‚ฐ์ž ์˜ค๋ฒ„๋กœ๋”ฉ์€ C++์˜ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ํ•ต์‹ฌ์ ์ธ ํŠน์ง• ์ค‘ ํ•˜๋‚˜๋กœ, ์ฝ”๋“œ ๊ฐ€๋…์„ฑ์„ ๋†’์ด๊ณ  ์ง๊ด€์ ์ธ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ฐ์— ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์—ฐ์‚ฐ์ž ์˜ค๋ฒ„๋กœ๋”ฉ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ˜•์‹์œผ๋กœ ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค. return_type operator ์—ฐ์‚ฐ์ž(๋งค๊ฐœ๋ณ€์ˆ˜) { // ์—ฐ์‚ฐ์ž๋ฅผ ์ •์˜ํ•˜๋Š” ์ฝ”๋“œ } ์—ฌ๊ธฐ์„œ `return_ty.. 2023. 8. 7.