๋ชฉ๋กํ”„๋กœ๊ทธ๋ž˜๋ฐ/Algorithm ์•Œ๊ณ ๋ฆฌ์ฆ˜ (7)

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

[Swift] ๊ทธ๋ž˜ํ”„์™€ ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜ DFS/BFS (์„ค๋ช… ๋ฐ ๊ตฌํ˜„ ์˜ˆ์ œ)

[Swift] ๊ทธ๋ž˜ํ”„์™€ ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜ DFS/BFS ๊ฐ€์žฅ ๋„์›€์ด ๋œ ๊ธ€.. https://nareunhagae.tistory.com/56 ๐Ÿ™ '์ด๊ฒƒ์ด ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ๋‹ค' ์ฑ…๋„ ํ•จ๊ป˜ ์ฐธ๊ณ ํ•ด ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜ํ”„ Graph ๊ทธ๋ž˜ํ”„์—์„œ๋Š” ๋ชจ๋“  ๊ฐ์ฒด๋Š” ์ •์ (๋…ธ๋“œ)๋กœ ๋‚˜ํƒ€๋‚ด๊ณ , ๋ชจ๋“  ๊ด€๊ณ„๋Š” ๊ฐ„์„ ์œผ๋กœ ๋‚˜ํƒ€๋‚ธ๋‹ค. ๋…ธ๋“œ Node / ์ •์  Vertex ๊ทธ๋ž˜ํ”„์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด๋Š” ๋‹จ์œ„. (๊ทธ๋ฆผ์—์„œ์˜ ๋™๊ทธ๋ผ๋ฏธ = ๋…ธ๋“œ) ๋‘ ๋…ธ๋“œ๊ฐ€ ์ธ์ ‘ํ•˜๋‹คadjacent : ๋‘ ๋…ธ๋“œ๊ฐ€ ๊ฐ„์„ ์œผ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์Œ์„ ์˜๋ฏธ ๊ฐ„์„  Edge ๋…ธ๋“œ ์‚ฌ์ด๋ฅผ ์ž‡๋Š” ์„ . ๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰ : ํ•˜๋‚˜์˜ ๋…ธ๋“œ๋ฅผ ์‹œ์ž‘์œผ๋กœ ๋‹ค์ˆ˜์˜ ๋…ธ๋“œ๋ฅผ ๋ฐฉ๋ฌธํ•˜๋Š” ๊ฒƒ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ์ค‘ 1์ฐจ์› ๋ฐฐ์—ด, 2์ฐจ์›” ๋ฐฐ์—ด ํƒ์ƒ‰ ๋ฌธ์ œ๋ฅผ ๊ทธ๋ž˜ํ”„ ํ˜•ํƒœ๋กœ ์ƒ๊ฐํ•˜๋ฉด ๋ฌธ์ œ๋ฅผ ์‰ฝ๊ฒŒ ํ’€ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ž˜ํ”„ ํ‘œ..

[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 ๋ฐ˜ํ™˜. ๋™์ž‘ ์ •..

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

[Hello Coding] ์•Œ๊ณ ๋ฆฌ์ฆ˜ 1์žฅ. ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์†Œ๊ฐœ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ž€? : ์–ด๋–ค ์ผ์„ํ•˜๊ธฐ ์œ„ํ•œ ๋ช…๋ น์˜ ์ง‘ํ•ฉ. ํŠนํžˆ ๋‹ค๋ฅธ ์ฝ”๋“œ๋ณด๋‹ค ์†๋„๋ฅผ ๋น ๋ฅด๊ฒŒ ํ•˜๊ฑฐ๋‚˜, ๋ฌธ์ œ๋ฅผ ํ’€๊ธฐ ์œ„ํ•œ ๊ฒƒ. ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์„ฑ๋Šฅ ์—ฌ๋Ÿฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜๋“ค์˜ ์žฅ๋‹จ์ ๊ณผ ์ฐจ์ด์ ์„ ์•Œ์•„์•ผ ํ•œ๋‹ค. ๋‹จ์ˆœํžˆ ๋‹ค๋ฅธ ์ž๋ฃŒ๊ตฌ์กฐ/์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋„ ์„ฑ๋Šฅ์ด ํฌ๊ฒŒ ๋‹ฌ๋ผ์ง„๋‹ค. ์ด์ง„ ํƒ์ƒ‰ ํƒ์ƒ‰ ๋ฌธ์ œ Search : ์ฃผ์–ด์ง„ ๋ฐ์ดํ„ฐ์—์„œ ์›ํ•˜๋Š” ํ•ญ๋ชฉ์„ ์–ด๋–ค ๋ฐฉ๋ฒ•์œผ๋กœ ์ฐพ์„ ๊ฒƒ์ธ๊ฐ€. ์˜ˆ) 1๋ถ€ํ„ฐ 100๊นŒ์ง€์˜ ์ˆซ์ž๋“ค ์ค‘ '78'์ด๋ผ๋Š” ์ˆซ์ž ์ฐพ๊ธฐ ๋‹จ์ˆœ ํƒ์ƒ‰ Simple search : ์ฒ˜์Œ๋ถ€ํ„ฐ ํ•˜๋‚˜์”ฉ ์ˆœ์„œ๋Œ€๋กœ ํ•ญ๋ชฉ์„ ํƒ์ƒ‰ ์˜ˆ) 1, 2, 3, 4, ... 77, 78 ์ˆœ์œผ๋กœ ํƒ์ƒ‰ํ•ด 78์„ ์ฐพ๋Š”๋‹ค. N๊ฐœ์˜ ์›์†Œ๋ฅผ ๊ฐ€์ง„ ๋ฆฌ์ŠคํŠธ์—์„œ ์ตœ๋Œ€ N๋ฒˆ ๋งŒ์— ๋‹ต์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค...