๋ชฉ๋กํ”„๋กœ๊ทธ๋ž˜๋ฐ (135)

Bibi's DevLog ๐Ÿค“๐ŸŽ

Sync, Async / Serial, Concurrent

Sync, Async / Serial, Concurrent https://babbab2.tistory.com/64?category=831129 https://cskime.tistory.com/18 Sync : synchronous (๋™๊ธฐ) : ๋™์‹œ ๋ฐœ์ƒํ•˜๋Š”. ์˜๋ฏธ : "์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต"์ด ๋™์‹œ์— ๋ฐœ์ƒํ•˜๋Š”. ์ฆ‰ ๋‚ด ์ž‘์—…์ด ๋๋‚˜๊ธฐ ์ „๊นŒ์ง€ ๋‹ค๋ฅธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์˜๋ฏธ = "์ˆœ์ฐจ์ " ํ‰์†Œ์— ๋น„๋™๊ธฐ ์ž‘์—… ์—†์ด ํ•˜๋Š” ์ฝ”๋”ฉ์ด ๋™๊ธฐ ๋ฐฉ์‹์œผ๋กœ ์ด๋ฃจ์–ด์ง. ๋Œ€๊ทœ๋ชจ์˜ ์ž‘์—…์„ ๋™๊ธฐ๋กœ ์ฒ˜๋ฆฌํ•˜๋ฉด ์ž‘์—…์†๋„ ์ €ํ•˜ - ๋น„๋™๊ธฐ๋กœ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•จ Async : asynchronous (๋น„๋™๊ธฐ) : ๋™์‹œ์— ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”. ์˜๋ฏธ : "์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต"์ด ๋™์‹œ์— ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ฆ‰ ๋‚ด ์ž‘์—…์ด ๋๋‚˜๊ธฐ ์ „์— ๋‹ค๋ฅธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ..

[Hello Coding ์•Œ๊ณ ๋ฆฌ์ฆ˜] 4. ํ€ต ์ •๋ ฌ

[210701] Hello Coding ์•Œ๊ณ ๋ฆฌ์ฆ˜ 4. ํ€ต ์ •๋ ฌ ๋ถ„ํ•  ์ •๋ณต divide and conquer : ๋ฌธ์ œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• ์ค‘ ๊ฐ€์žฅ ์œ ๋ช…ํ•œ ์žฌ๊ท€์  ์•Œ๊ณ ๋ฆฌ์ฆ˜. ํŠน์ • ์•Œ๊ณ ๋ฆฌ์ฆ˜(๊ธฐ์ˆ )์ด ์•„๋‹Œ, ๋ฌธ์ œ๋ฅผ ํ’€๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•๋ก ์ด๋‹ค. ๋ถ„ํ•  ์ •๋ณต์˜ ์ฆ๋ช… - '์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ• Euclid's algorithm' ์ฐธ๊ณ ํ•˜๊ธฐ ์˜ˆ์‹œ : ๋†๋ถ€๊ฐ€ ์–ด๋–ค ๋•…์„ ๋˜‘๊ฐ™์€ ์ •์‚ฌ๊ฐํ˜• ํ† ์ง€๋กœ ๋‚˜๋ˆ„๊ณ  ์‹ถ์„ ๋•Œ. ๋ถ„ํ•  ์ •๋ณต์œผ๋กœ ํ‘ธ๋Š” ๋‹จ๊ณ„. ๊ธฐ๋ณธ ๋‹จ๊ณ„๋ฅผ ์ฐพ๋Š”๋‹ค. ์ด ๋ถ€๋ถ„์€ ๊ฐ€๋Šฅํ•œ ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๋ฌธ์ œ์—ฌ์•ผ ํ•œ๋‹ค. ์ „์ฒด ๋ฌธ์ œ๊ฐ€ ๊ธฐ๋ณธ ๋‹จ๊ณ„๊ฐ€ ๋  ๋•Œ๊นŒ์ง€ ๋‚˜๋ˆ„๊ฑฐ๋‚˜ ์ž‘๊ฒŒ ๋งŒ๋“ ๋‹ค. ๋ถ„ํ•  ์ •๋ณต์—์„œ๋Š” ์žฌ๊ท€ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ๋งˆ๋‹ค ๋ฌธ์ œ๋ฅผ ์ž‘๊ฒŒ ๋‚˜๋ˆ„์–ด์•ผ ํ•œ๋‹ค. ์˜ˆ์ œ Q. ๋ฐฐ์—ด์˜ ๋ชจ๋“  ์ˆซ์ž๋ฅผ ๋”ํ•œ ํ•ฉ๊ณ„ ๊ตฌํ•˜๊ธฐ. ๋ฐ˜๋ณต๋ฌธ์ด ์•„๋‹Œ ์žฌ๊ท€ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ๊ธฐ๋ณธ ๋‹จ๊ณ„๋ฅผ ์ฐพ๋Š”๋‹ค. (..

[Hello Coding ์•Œ๊ณ ๋ฆฌ์ฆ˜] 3์žฅ. ์žฌ๊ท€

3์žฅ. ์žฌ๊ท€ ์‹œ์ž‘ํ•˜๊ธฐ์— ์•ž์„œ ์˜ˆ์ œ ์ฝ”๋“œ ์ง์ ‘ ์‹คํ–‰ํ•ด ๋ณด๊ธฐ ์ ์–ด๋„ ํ•œ ๋ฒˆ์€ ์—ฐํ•„๊ณผ ์ข…์ด๋ฅผ ๊ฐ€์ง€๊ณ  ์žฌ๊ท€ํ•จ์ˆ˜์˜ ์‹คํ–‰ ๊ณผ์ •์„ ๋”ฐ๋ผ๊ฐ€ ๋ณด๊ธฐ. ์˜์‚ฌ์ฝ”๋“œ(pseudocode, ์Šˆ๋„์ฝ”๋“œ) : ๋ฌธ์ œ์™€ ํ’€์ด ๋ฐฉ๋ฒ•์„ ๊ฐ„๋‹จํ•œ ์ฝ”๋“œ๋กœ ์„ค๋ช…ํ•œ ๊ฒƒ. ์‹ค์ œ๋กœ ๋™์ž‘ํ•˜์ง„ ์•Š์Œ ์žฌ๊ท€ recursion ์žฌ๊ท€ ํ•จ์ˆ˜๊ฐ€ ์ž๊ธฐ ์ž์‹ ์„ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ. ๋ฌธ์ œ : ์—ฌ๋Ÿฌ ๊ฒน์œผ๋กœ ํฌ์žฅ๋œ ์ƒ์ž๋“ค์ด ์žˆ๊ณ , ๊ทธ ์ƒ์ž๊ฐ€ ๋˜ ๋‹ค๋ฅธ ์ƒ์ž๋“ค ์†์— ๋“ค์–ด ์žˆ๋‹ค. ๋ช‡ ๊ฐœ์ผ์ง€ ๋ชจ๋ฅด๋Š” ์ƒ์ž๋“ค ์ค‘ ์—ด์‡ ๊ฐ€ ๋“ค์–ด์žˆ๋Š” ์ƒ์ž๋ฅผ ์ฐพ์•„์•ผ ํ•œ๋‹ค. ๋ฐฉ๋ฒ• 1 : ๋ฐ˜๋ณต๋ฌธ ์‚ฌ์šฉํ•˜๊ธฐ ๋‚ด๋ถ€๋ฅผ ํ™•์ธํ•  ์ƒ์ž๋ฅผ ์Œ“์•„๋†“๋Š”๋‹ค(=์ƒ์ž ๋”๋ฏธ). ์ƒ์ž ํ•˜๋‚˜๋ฅผ ์ง‘์–ด์„œ ๋‚ด๋ถ€๋ฅผ ํ™•์ธํ•œ๋‹ค. ๋งŒ์•ฝ ์•ˆ์— ์ƒ์ž๊ฐ€ ์žˆ๋‹ค๋ฉด, ํ™•์ธํ•  ์ƒ์ž ๋”๋ฏธ์— ๋†“์€ ๋’ค 2๋กœ ๋Œ์•„๊ฐ„๋‹ค. ๋งŒ์•ฝ ์•ˆ์— ์—ด์‡ ๊ฐ€ ์žˆ๋‹ค๋ฉด ์ž‘์—…์„ ์ข…๋ฃŒํ•œ๋‹ค. ์•„๋ž˜๋Š” ์œ„ ๊ณผ์ •์— ๋Œ€..

[Hello Coding ์•Œ๊ณ ๋ฆฌ์ฆ˜] 2์žฅ. ์„ ํƒ ์ •๋ ฌ

[210630] (์–ด์ œ์— ์ด์–ด์„œ ์ž‘์„ฑ) Hello Coding ์•Œ๊ณ ๋ฆฌ์ฆ˜ 2์žฅ. ์„ ํƒ ์ •๋ ฌ ๋ฐฐ์—ด, ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ, ์„ ํƒ ์ •๋ ฌ์— ๊ด€ํ•ด ๊ณต๋ถ€ํ•œ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋™์ž‘ํ•˜๋Š” ๋ฐฉ๋ฒ• ์ปดํ“จํ„ฐ ๋ฉ”๋ชจ๋ฆฌ์˜ ๋™์ž‘ ๋ฐฉ์‹. ์—„์ฒญ๋‚˜๊ฒŒ ๋งŽ์€ ์„œ๋ž์ด ์žˆ๊ณ , ๊ฐ ์„œ๋ž์—๋Š” ์ฃผ์†Œ๊ฐ€ ๋ถ™์–ด ์žˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ์— ๋ฌด์–ธ๊ฐ€๋ฅผ ์ €์žฅํ•  ๋•Œ๋Š” ์ปดํ“จํ„ฐ์—๊ฒŒ ๊ณต๊ฐ„์„ ์š”์ฒญํ•œ๋‹ค. ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์›์†Œ๋ฅผ ์ €์žฅํ•  ๋•Œ, '๋ฐฐ์—ด'๊ณผ '๋ฆฌ์ŠคํŠธ' ๋‘ ๋ฐฉ์‹ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•œ๋‹ค. ๋ฐฐ์—ด vs ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ ๋ฐฐ์—ด (array) ์นœ๊ตฌ๋“ค๊ณผ ์˜ํ™”๋ฅผ ๋ณด๋Ÿฌ ๊ฐ€์„œ ์ž๋ฆฌ๋ฅผ ์ฐพ์„ ๋•Œ์— ๋น„์œ ํ•  ์ˆ˜ ์žˆ๋‹ค. 3๋ช…์ด์„œ ์ขŒ์„์„ ์˜ˆ์•ฝํ–ˆ๋Š”๋ฐ ํ•œ ๋ช…์ด ๋” ์™”๋‹ค๋ฉด, 4๋ช…์ด์„œ ๋ถ™์–ด ์•‰์„ ์ˆ˜ ์žˆ๋Š” ์ขŒ์„์œผ๋กœ ๋‹ค ๊ฐ™์ด ์˜ฎ๊ฒจ ์•‰์•„์•ผ ํ•จ ๋ฐฐ์—ด์˜ ๋ชจ๋“  ์›์†Œ๋Š” ๊ฐ™์€ ์ž๋ฃŒํ˜•์ด์–ด์•ผ ํ•œ๋‹ค. ์žฅ์  : READ๊ฐ€ ๋น ๋ฅด๋‹ค. ์ธ๋ฑ์Šค index : ๋ฐฐ์—ด์—์„œ๋Š”..

[Hello Coding ์•Œ๊ณ ๋ฆฌ์ฆ˜] 1์žฅ. ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์†Œ๊ฐœ

[210628] Hello Coding ์•Œ๊ณ ๋ฆฌ์ฆ˜ 1์žฅ. ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์†Œ๊ฐœ ๋“ค์–ด๊ฐ€๋Š” ๊ธ€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ : ์–ด๋–ค ์ผ์„ ํ•˜๊ธฐ ์œ„ํ•œ ๋ช…๋ น์˜ ์ง‘ํ•ฉ ์„ฑ๋Šฅ ์—ฌ๋Ÿฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜๋“ค์˜ ์žฅ๋‹จ์ ๊ณผ ์ฐจ์ด์ ์„ ์ดํ•ดํ•˜๊ณ  ์“ธ ์ค„ ์•Œ์•„์•ผ ํ•œ๋‹ค. ๋‹ค๋ฅธ ์ž๋ฃŒ๊ตฌ์กฐ / ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์“ฐ๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋„ ์„ฑ๋Šฅ์ด ํฌ๊ฒŒ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๋‹ค. ๋‹จ์ˆœ ํƒ์ƒ‰ simple search ํƒ์ƒ‰ ๋ฌธ์ œ๋ฅผ ํ’€ ๋•Œ ์‚ฌ์šฉ. ๋™์ž‘ : ๋‹จ์ˆœํžˆ ์›์†Œ ํ•˜๋‚˜ํ•˜๋‚˜๋ฅผ ๋งž๋Š”์ง€ ์•„๋‹Œ์ง€ ์ผ์ผ์ด ํ™•์ธํ•˜๋Š” ๋ฐฉ์‹ n๊ฐœ์˜ ์›์†Œ ๋ฆฌ์ŠคํŠธ์—์„œ ์ตœ๋Œ€ n๋ฒˆ๋งŒ์— ์ •๋‹ต์„ ์ฐพ์Œ ์ด์ง„ ํƒ์ƒ‰ binary search ํƒ์ƒ‰ ๋ฌธ์ œ search ๋ฅผ ํ’€ ๋•Œ ์‚ฌ์šฉ. ์ด์ง„ ํƒ์ƒ‰์€ ๋งค ๋‹จ๊ณ„๋งˆ๋‹ค ์ ˆ๋ฐ˜์˜ ํ›„๋ณด๋“ค์„ ์—†์•จ ์ˆ˜ ์žˆ๋‹ค. input : ์ •๋ ฌ๋œ ์›์†Œ ๋ฆฌ์ŠคํŠธ output : ์›ํ•˜๋Š” ์›์†Œ๊ฐ€ ์žˆ์œผ๋ฉด ๊ทธ ์œ„์น˜๋ฅผ ๋ฐ˜ํ™˜. ์•„๋‹ˆ๋ฉด null ๋ฐ˜ํ™˜. ๋™์ž‘ ์ •..

[Git] ์ปค๋ฐ‹๋ฉ”์‹œ์ง€ ์ˆ˜์ •ํ•˜๋Š” ๋ฒ•

๊นƒ ์ปค๋ฐ‹๋ฉ”์‹œ์ง€ ์ˆ˜์ •ํ•˜๊ธฐ ์ถœ์ฒ˜ : ๊นƒ ์ปค๋ฐ‹๋ฉ”์‹œ์ง€ ์ˆ˜์ •. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค๐Ÿ™‡‍โ™€๏ธ 1.์•„์ง ์ปค๋ฐ‹์ด ๋กœ์ปฌ์ €์žฅ์†Œ์— ์žˆ์„ ๋•Œ ๋กœ์ปฌ ์ €์žฅ์†Œ์—์„œ ์ปค๋ฐ‹์€ ํ–ˆ์ง€๋งŒ, push๋Š” ์•„์ง ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๊ฐ€์žฅ ์ตœ๊ทผ์˜ ์ปค๋ฐ‹ ์ˆ˜์ •ํ•˜๊ธฐ git commit --amend ๋” ์˜ค๋ž˜๋œ ์ปค๋ฐ‹ ์ˆ˜์ •ํ•˜๊ธฐ, ๋˜๋Š” ํ•œ ๋ฒˆ์— ์—ฌ๋Ÿฌ ์ปค๋ฐ‹ ์ˆ˜์ •ํ•˜๊ธฐ git log๋กœ ์ปค๋ฐ‹๋‚ด์—ญ์„ ๋ณด๋ฉฐ ์–ด๋–ค ์ปค๋ฐ‹์„ ์ˆ˜์ •ํ• ์ง€ ํ™•์ธํ•œ๋‹ค. git rebase -i HEAD~์ˆซ์ž : ํ˜„์žฌ ๋ธŒ๋žœ์น˜์—์„œ ๊ฐ€์žฅ ์ตœ๊ทผ์˜ ์ปค๋ฐ‹ ์ˆซ์ž๊ฐœ๋ฅผ ๋ณด์—ฌ์ค€๋‹ค. vim์ด ์—ด๋ฆฌ๊ณ  ์ตœ๊ทผ ์ปค๋ฐ‹๋“ค์ด ์•„๋ž˜์™€ ๊ฐ™์ด ๋‚˜ํƒ€๋‚œ๋‹ค. pick e499d89 Delete CNAME pick 0c39034 Better README pick f7fde4a Change the commit message but push the same com..

[Git] .gitignore๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ  ๋ฐ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•

.gitignore๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ์™€ ์‚ฌ์šฉ ๋ฐฉ๋ฒ• .gitignore๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ  ํŒŒ์ผ ๋ฐฑ์—… ์ •๋ณด, ์ œํ’ˆ ๋นŒ๋“œ ์ •๋ณด ๋“ฑ์˜ ๋กœ์ปฌ ๊ตฌ์„ฑ์„ ์›๊ฒฉ ์ €์žฅ์†Œ์— ์˜ฌ๋ฆฌ์ง€ ์•Š๊ธฐ ์œ„ํ•ด (git์ด ์ด ํŒŒ์ผ๋“ค์„ trackํ•˜์ง€ ์•Š๋„๋ก untracked files๋กœ ์„ค์ •ํ•จ) ๊ฐ์ข… noise๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์›ํ•˜์ง€ ์•Š๋Š” ํŒŒ์ผ์˜ ์—…๋กœ๋“œ ๋ฐฉ์ง€ ๋ฐ์ดํ„ฐ ์ถฉ๋Œ๋กœ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์†์‹ค ๋ฐฉ์ง€ .gitignore ์‚ฌ์šฉ ๋ฐฉ๋ฒ• ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ• : gitignore.io ์ด์šฉํ•˜๊ธฐ. ์‚ฌ์šฉ ์–ธ์–ด, IDE, OS, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋“ฑ์„ ์ž…๋ ฅํ•˜๊ณ  ์ƒ์„ฑ๋œ .gitignore ํŒŒ์ผ์„ ๋ณต๋ถ™ํ•˜์—ฌ ์‚ฌ์šฉํ•จ. ์ง์ ‘ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ• : vim์—์„œ .gitignoreํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ณ  trackํ•˜์ง€ ์•Š์„ ํŒŒ์ผ์„ ์ง์ ‘ ์ž‘์„ฑํ•œ๋‹ค. .gitignore ์ ์šฉํ•˜๊ธฐ์— ์ž˜ ๋‚˜์™€์žˆ๋‹ค.