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

์ „์ฒด ๊ธ€125

[Go] Mordern Go ๊ธฐ๋ณธ2(ํ•จ์ˆ˜, ์ธํ„ฐํŽ˜์ด์Šค, ๋ฉ”์„œ๋“œ, ์—๋Ÿฌ) ํ•จ์ˆ˜โœ” ์—ฌ๋Ÿฌ๊ฐœ ๋ฐ˜ํ™˜๊ฐ’func divmod(a, b int) (int, int) { return a / b, a % b}q, r := divmod(10, 3) // q=3, r=1โœ” ์ด๋ฆ„ ์žˆ๋Š” ๋ฐ˜ํ™˜๊ฐ’func sum(a, b int) (result int) { result = a + b return // ์ด๋ฆ„ ์žˆ์œผ๋ฉด return ์‹œ ๋ณ€์ˆ˜ ์ƒ๋žต ๊ฐ€๋Šฅ}โœ” ํ•จ์ˆ˜๋„ ์ผ๊ธ‰๊ฐ์ฒดfunc operate(a, b int, f func(int, int) int) int { return f(a, b)}sum := func(x, y int) int { return x + y } // ๋žŒ๋‹คresult := operate(3, 4, sum) // 7โœ” ๋žŒ๋‹ค(์ต๋ช…ํ•จ์ˆ˜)result := func(x int.. 2025. 5. 21.
[Go] Modern Go ๊ธฐ๋ณธ ๋“ค์–ด๊ฐ€๋ฉฐGo์˜ ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ์ดˆ ๋ฌธ๋ฒ•์— ๋Œ€ํ•ด์„œ ๋‹ค๋ฃจ์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ํƒ€ ์–ธ์–ด์™€ ๋น„๊ตํ–ˆ์„ ๋•Œ ์–ด๋–ค ํŽธ๋ฆฌํ•œ ์ ๊ณผ ์ฐจ์ด๊ฐ€ ์žˆ๋Š”์ง€ ๊ฐ„๋‹จํžˆ ์งš์–ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ณ€์ˆ˜์ •์ˆ˜ ํƒ€์ž…: int8/16/32/64, uint8/16/32/64, int, uint, runerune: UTF-8์ธ์ฝ”๋”ฉ์˜ ์œ ๋‹ˆ์ฝ”๋“œ ์ฝ”๋“œ ํฌ์ธํŠธ๋ฅผ ํ‘œ์‹œํ•˜๋Š” ์ •์ˆ˜๊ธฐ๋ณธ๊ฐ’: ์ •์ˆ˜ 0, ์‹ค์ˆ˜ 0.0, ๋ถˆ๋ฆฌ์–ธ false, ๋ฌธ์ž์—ด “”, ๊ทธ์™ธ nil์•”์‹œ์  ํƒ€์ž…๋ณ€ํ™˜ ํ—ˆ์šฉX์‹ค์ˆ˜ ๋น„๊ต์‹œ math.Nexafter๋กœ ๋น„๊ตํ•˜๋ฉด ํŽธ๋ฆฌa, b = b, a ์Šค์™‘iota๋กœ ์—ด๊ฑฐ๊ฐ’ ์‚ฌ์šฉconst ( Red int = iota // 0 Blue int = iota // 1 Green int = iota // 2 Yellow int .. 2025. 5. 21.
[DFS] ์žฌ๊ท€์™€ ์Šคํƒ์œผ๋กœ ๊ฐ€๋ณ๊ฒŒ ๋ฌธ์ œ ํ’€๊ธฐ ๋“ค์–ด๊ฐ€๋ฉฐ์ €๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ์ด์ „ ์ƒํƒœ๋ฅผ ๊ธฐ์–ตํ•ด์•ผํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋Œ€ํ‘œ์ ์ธ ์Šคํƒ ํ™œ์šฉ๋ฒ•์ด๋ผ๊ณ  ์†Œ๊ฐœํ–ˆ์Šต๋‹ˆ๋‹ค.(์ด์ „ ํฌ์ŠคํŒ…) ์Šคํƒ๊ณผ ์žฌ๊ท€๋Š” ์ด๋Ÿฌํ•œ ์ ์—์„œ ๋น„์Šทํ•œ ์ ์ด ๋งŽ์Šต๋‹ˆ๋‹ค. ๊นŠ๊ฒŒ ํŒŒ๊ณ ๋“ค์–ด๊ฐ”๋‹ค๊ฐ€ ๋‹ค์‹œ ๋‚˜์˜ค๋Š” ํ˜•ํƒœ๋Š” ๋™์ผํ•˜์ฃ . ์˜ค๋Š˜์€ ์ด๋Ÿฌํ•œ ์œ ํ˜•์˜ ๋ฌธ์ œ๋ฅผ ์ ‘ํ–ˆ์„ ๋•Œ, ์žฌ๊ท€๋ฅผ ์„ ํƒํ•ด์•ผ ํ•˜๋Š”์ง€ ์Šคํƒ์„ ์„ ํƒํ•ด์•ผํ•˜๋Š”์ง€ ์•Œ์•„๋ด…์‹œ๋‹ค.๊ธฐ์ค€์Šคํƒ ๊ธฐ๋ฐ˜ DSF์žฌ๊ท€ DFS์ฝ”๋“œ ๋ณต์žก๋„์Šคํƒ ์„ ์–ธ, ์Œ(pair) ๊ด€๋ฆฌ, ๋ฐ˜๋ณต๋ฌธ ์‚ฌ์šฉํ•จ์ˆ˜ ํ˜ธ์ถœ๋กœ ๊ตฌ์กฐ ๋‹จ์ˆœ๊ฐ€๋…์„ฑํ๋ฆ„์„ ๋”ฐ๋ผ๊ฐ€๊ธฐ ์–ด๋ ค์›€๋…ผ๋ฆฌ์ ์œผ๋กœ ๋‹จ๊ณ„์ ์ด๋ฉฐ ์ž์—ฐ์Šค๋Ÿฌ์›€์„ฑ๋Šฅ๋น„์Šทํ•จ (N์ด ์ž‘์Œ, ์ตœ๋Œ€ 8์ž๋ฆฌ)๊ฑฐ์˜ ์ฐจ์ด ์—†์Œ์ •๋ ฌํ›„์ฒ˜๋ฆฌ ํ•„์š” (๋ฒกํ„ฐ + ์ •๋ ฌ)ํƒ์ƒ‰ ์ˆœ์„œ ์กฐ์ ˆ ๊ฐ€๋Šฅ (for๋ฌธ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ)์ €๋„ ๋””๋ฒ„๊น…์˜ ๋‚œํ•ดํ•จ๊ณผ ์ง๊ด€์ ์ด์ง€ ์•Š์€ ์ฝ”๋“œ ํ๋ฆ„ ๋•Œ๋ฌธ์— ์žฌ๊ท€๋ฅผ ์™ธ๋ฉดํ•˜๊ณค ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋Œ€๋ถ€๋ถ„์˜ DFS .. 2025. 5. 16.
[์Šคํƒ, ํ] ๋ฐฑํŠธ๋ž˜ํ‚น(์ด์ „ ์ƒํƒœ ๊ธฐ์–ต)์€ ์Šคํƒ์„ ํ™œ์šฉํ•˜์„ธ์š” ์ด์ „ ์ƒํƒœ๋ฅผ ๊ธฐ์–ตํ•ด์•ผ ํ•˜๋Š” ๊ตฌ์กฐ(๋ฐฑํŠธ๋ž˜ํ‚น)์—๋Š” ์Šคํƒ์„ ํ™œ์šฉํ•˜์„ธ์š”. ๋“ค์–ด๊ฐ€๋ฉฐ์Šคํƒ๊ณผ ํ์— ๋Œ€ํ•œ ์„ค๋ช…์€ ๊ตณ์ด ํ•˜์ง€ ์•Š๊ฒ ์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ ์–ด๋–ค ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ์Šคํƒ๊ณผ ํ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”์ง€ ์ง‘์ค‘ํ•ฉ์‹œ๋‹ค. ์Šคํƒ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ํ›„์ž…์„ ์ถœ ๊ตฌ์กฐ์ด๊ธฐ ๋•Œ๋ฌธ์— DFS(๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰), ์žฌ๊ท€ ๋“ฑ์— ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์„ ๊ด€ํ†ตํ•˜๋Š” ๊ฐœ๋…์€ ์ด์ „ ์ƒํƒœ ๋ณต๊ตฌ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์Šคํƒ ์ž์ฒด๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์Œ“์•„ ์˜ฌ๋ฆฌ๋‹ค๊ฐ€ ๋บ„ ๋•Œ๋Š” ๊ฐ€์žฅ ์ตœ์‹ ์— ์Œ“์ธ ๋ฐ์ดํ„ฐ๋งŒ ๋นผ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ”๋กœ ์ด์ „ ์ƒํƒœ๋ฅผ ๋˜์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ ํŠน์„ฑ ๋•๋ถ„์— ์žฌ๊ท€, DFS, ๊ด„ํ˜ธ ๊ฒ€์‚ฌ, Undo ๋“ฑ ์–ด๋–ค ๋ฐฉํ–ฅ์œผ๋กœ ๊ฐ”๋‹ค๊ฐ€ ๋‹ค์‹œ ๋˜๋Œ์•„ ์˜ฌ ์ˆ˜ ์žˆ๋Š” ํšŒ๊ธฐ ๋Šฅ๋ ฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ, ์Šคํƒ์€ ์ด์ „ ์ƒํƒœ๋ฅผ ๊ธฐ์–ตํ•ด ๋‚˜๊ฐ€๋ฉด์„œ ํ•„์š”ํ•  ๋•Œ ๋น ๋ฅด๊ฒŒ popํ•˜์—ฌ ๋น„๊ตํ•˜๋Š”๋ฐ ์ตœ์ ํ™”๋œ ์ž๋ฃŒ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค.ํ์˜ ๊ฒฝ์šฐ์—๋Š” .. 2025. 5. 11.
[์šฐ์„ ์ˆœ์œ„ ํ] ์ตœ์†Ÿ๊ฐ’ or ์ตœ๋Œ“๊ฐ’ ์ฐพ๊ธฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜(feat. deque) ์ตœ์†Ÿ๊ฐ’, ์ตœ๋Œ“๊ฐ’ ์ฐพ๊ธฐ ๋ฌธ์ œ์—์„œ ์ •๋ ฌ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค๋ฉด, ์šฐ์„ ์ˆœ์œ„ ํ๋ฅผ ์ƒ๊ฐํ•˜์„ธ์š” ๋“ค์–ด๊ฐ€๋ฉฐ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ์ธก์ •ํ•˜๋Š” ๋ฌธ์ œ ์ค‘์—์„œ๋Š” ๊นŒ๋‹ค๋กœ์šด ๋ฌธ์ œ๋“ค์ด ๋งŽ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ์ •๋ ฌ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ์ธ๋ฐ, ์ •๋ ฌ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ NlogN์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ํŠน์ • ๋ฌธ์ œ์˜ ์š”๊ตฌ์‚ฌํ•ญ์—์„œ๋Š” ์ ์–ด๋„ N์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ์š”๊ตฌํ•˜๋Š” ๋ถ€๋ถ„์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿด ๋• ์šฐ์„ ์ˆœ์œ„ ํ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด logN์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋ฐฑ์ค€ 11003 ์ฒ˜์Œ์—๋Š” ๋ฌธ์ œ ์ž์ฒด๊ฐ€ ์ดํ•ด๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์Šฌ๋ผ์ด๋”ฉ ์œˆ๋„์šฐ ํ˜•ํƒœ๋กœ ๊ณ ์ •๋œ ๊ตฌ๊ฐ„์ด ์ด๋™ํ•˜๋ฉด์„œ ๊ทธ ์ค‘ ์ตœ์†Œ๊ฐ’์„ ์ฐพ๋Š” ๋ฌธ์ œ๋”๋ผ๊ตฌ์š”. N์˜ ์ตœ๋Œ€ ๋ฒ”์œ„๊ฐ€ 5,000,000์ด๋ฏ€๋กœ ์ •๋ ฌ์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ์‹œ๊ฐ„์ดˆ๊ณผ์ž…๋‹ˆ๋‹ค.์ €๋Š” ๋ฌธ์ œ๋ฅผ ๋‘๊ฐ€์ง€ ํŒŒํŠธ๋กœ ๋‚˜๋ˆด์Šต๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ๋Š” ๊ตฌ๊ฐ„์ด ์ด๋™ํ•จ์— ๋”ฐ๋ผ ์ตœ์†Œ๊ฐ’ ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ฐฑ์‹ ํ•ด์ฃผ๋Š”.. 2025. 4. 13.
[๊ธฐ๋ณธ] ํˆฌ ํฌ์ธํ„ฐ ๋“ค์–ด๊ฐ€๋ฉฐํˆฌ ํฌ์ธํ„ฐ๋Š” 2๊ฐœ์˜ ํฌ์ธํ„ฐ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ์ตœ์ ํ™”ํ•ฉ๋‹ˆ๋‹ค. ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋งค์šฐ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ์ต์ˆ™ํ•˜์ง€ ์•Š์€ ์‚ฌ๋žŒ๋“ค์€ ํˆฌ ํฌ์ธํ„ฐ๋ฅผ ํ™œ์šฉํ•  ์ƒ๊ฐ์„ ์‰ฝ๊ฒŒ ํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์˜ค๋Š˜์€ ํˆฌ ํฌ์ธํ„ฐ๋ฅผ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋Š”์ง€ ์•Œ์•„๋ด…์‹œ๋‹ค. ํˆฌ ํฌ์ธํ„ฐ๋Š” ์ธ์ ‘ํ•œ ๋ฆฌ์ŠคํŠธ์—์„œ ๋‘ ์ธ๋ฑ์Šค๋ฅผ ๊ธฐ๋กํ•ด๊ฐ€๋ฉด์„œ ์กฐ๊ฑด ์ฒดํฌ๋ฅผ ํ•ด ๋‚˜๊ฐ‘๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์ค‘์š”ํ•œ ๊ฒƒ์€ ๊ธฐ๋ก์ž…๋‹ˆ๋‹ค. ํฌ์ธํ„ฐ๊ฐ€ ๊ธฐ๋ก์„ ํ•ด๋‚˜๊ฐ€๊ธฐ ๋•Œ๋ฌธ์— ์ „์ฒด ์›์†Œ๋ฅผ ์ˆœํšŒํ•˜๋ฉด์„œ ๋ณต์žก๋„๋ฅผ ๋‚ญ๋น„ํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค๋Š” ํฐ ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํˆฌ ํฌ์ธํ„ฐ๋Š” ๋ณ‘ํ•ฉ์ •๋ ฌ(merge sort)์˜ counquer ์˜์—ญ์˜ ๊ธฐ์ดˆ๊ฐ€ ๋˜๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์ œ1๋ฐฑ์ค€ 2018: ์ˆ˜๋“ค์˜ ํ•ฉ 5(๋งํฌ)๋ถ„์„์ฃผ์–ด์ง„ ์ œํ•œ์‹œ๊ฐ„์€ 2์ดˆ์ธ๋ฐ N์˜ ์ตœ๋Œ“๊ฐ’์€ 10,000,000์œผ๋กœ ๋งค์šฐ ํฌ๊ฒŒ ์žกํ˜€์žˆ์Šต๋‹ˆ๋‹ค. nlogn์˜ .. 2025. 3. 25.