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

๐Ÿ”Ž Algorithm21

[๊ฐœ๋… ์ •๋ฆฌ] ์ตœ๋‹จ๊ฑฐ๋ฆฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ - ํ”Œ๋กœ์ด๋“œ ์™€์ƒฌ ๊ฐ€์ค‘์น˜๊ฐ€ ์—†๋Š” ๊ทธ๋ž˜ํ”„์˜ ์ตœ๋‹จ๊ฑฐ๋ฆฌ ๋ฌธ์ œ๋Š” ๋Œ€๋ถ€๋ถ„ BFS๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ, ๊ฐ„์„ ์— ๊ฐ€์ค‘์น˜๊ฐ€ ์กด์žฌํ•œ๋‹ค๋ฉด BFS๊ฐ€ ์•„๋‹Œ ์ตœ๋‹จ๊ฑฐ๋ฆฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ†ตํ•ด ์ ‘๊ทผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๊ฐ€์ค‘์น˜ ๊ทธ๋ž˜ํ”„์˜ ์ตœ๋‹จ๊ฑฐ๋ฆฌ ๋ฌธ์ œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์œ ํ˜•์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ๋‘ ์ •์  ๊ฐ„์˜ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ ํ•˜๋‚˜์˜ ์ •์ ์—์„œ ๋‹ค๋ฅธ ๋ชจ๋“  ์ •์ ๊ณผ์˜ ์ตœ๋‹จ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ ํ•˜๋‚˜์˜ ์ •์ ์œผ๋กœ ๊ฐ€๋Š” ๋ชจ๋“  ์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ ์ •์  ๊ฐ„์˜ ๋ชจ๋“  ์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ ์ด ์ค‘ 4๋ฒˆ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ํ”Œ๋กœ์ด๋“œ-์™€์ƒฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. ํ”Œ๋กœ์ด๋“œ ์™€์ƒฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ”Œ๋กœ์ด๋“œ ์™€์ƒฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋ชจ๋“  ์ •์ ๊ฐ„์˜ ์ตœ๋‹จ๊ฒฝ๋กœ๋ฅผ ๊ตฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ž…๋‹ˆ๋‹ค. ์•ž์œผ๋กœ์˜ ์„ค๋ช…์—์„œ ์‚ฌ์šฉ๋  ๊ทธ๋ž˜ํ”„๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฐ€์ค‘์น˜๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ดˆ๊ธฐ ๊ฐ€์ค‘์น˜ ๊ฐ’์„ ์ €์žฅํ•˜๋Š” .. 2021. 3. 16.
[๋ฐฑ์ค€] 1799. ๋น„์ˆ ๋ฌธ์ œ ํ’€์ด ์ฒ˜์Œ์— ์ƒ๊ฐํ–ˆ๋˜ ๋ฐฉ๋ฒ•์€ ์™„์ „ ํƒ์ƒ‰์„ ํ†ตํ•ด ์ตœ๋Œ€ ์ˆ˜๋ฅผ ์ฐพ๋Š” ๋ฐฉ๋ฒ•์ด์—ˆ๋‹ค. ์ค‘๊ฐ„์— ๊ฐ€์ง€์น˜๊ธฐ๋ฅผ ํ†ตํ•ด ์‹œ๊ฐ„์„ ์ค„์ผ ์ˆ˜ ์žˆ๊ฒ ์ง€๋งŒ n์˜ ์ตœ๋Œ€๊ฐ’์ด 100์ด๊ณ  (๋ชจ๋“  ์ ์— ๋Œ€ํ•ด ๋†“๋Š” ๊ฒฝ์šฐ/ ๋†“์ง€ ์•Š๋Š” ๊ฒฝ์šฐ) * (๋†“์„ ์ˆ˜ ์žˆ๋Š”์ง€ ํŒ๋‹จํ•˜๊ธฐ ์œ„ํ•ด ์–‘ ๋Œ€๊ฐ์„ ์„ ํƒ์ƒ‰ํ•˜๋Š” ๊ฒฝ์šฐ)๋ฅผ ํ•˜๊ฒŒ ๋˜๋ฉด O(2^n * n)์ด๊ธฐ ๋•Œ๋ฌธ์— ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒƒ ๊ฐ™์•„์„œ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ์ƒ๊ฐํ•ด๋ดค๋‹ค. ์ƒ๊ฐํ•œ ๋ฐฉ๋ฒ•์€ N-Queens์—์„œ ๋ชจ๋“  ํ–‰๋ ฌ์„ ์ €์žฅํ•˜์ง€ ์•Š๊ณ  ํ•ด๋‹น idx์—๋Š” ํ•˜๋‚˜์˜ ๊ฐ’๋งŒ ์˜ฌ ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค๋ฉด ์‹œ๊ฐ„์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ƒ๊ฐ์„ ํ–ˆ๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋–ป๊ฒŒ ๋ฌถ์–ด์•ผ ํ• ์ง€ ๊ณ ๋ฏผ์„ ํ•ด๋ดค๋‹ค. N-Queens์—์„œ queen์€ ๊ฐ€๋กœ,์„ธ๋กœ๋ฅผ ๊ฐˆ ์ˆ˜ ์žˆ์—ˆ๊ณ  ์ด๋กœ ์ธํ•ด ํ•˜๋‚˜์˜ ํ–‰์— ํ€ธ์„ ๋†“์„ ๊ฒฝ์šฐ์—๋Š” ๊ฐ™์€ ํ–‰์—๋Š” ํ€€์ด ์กด์žฌํ•˜์ง€ ๋ชปํ•˜๋Š” ์„ฑ์งˆ์„ ์ด์šฉํ–ˆ์—ˆ๋‹ค. ์ด.. 2021. 3. 7.
[๋ฐฑ์ค€] 1967. ํŠธ๋ฆฌ์˜ ์ง€๋ฆ„ ๋ฌธ์ œ ํ’€์ด ์ฒ˜์Œ ์‹œ๋„ํ–ˆ๋˜ ๋ฐฉ๋ฒ•์€ 1๋ฒˆ์˜ ์ž์‹๋…ธ๋“œ๋“ค์„ ์‹œ์ž‘์ ์œผ๋กœ ์žก์•„ DFS๋ฅผ ํ†ตํ•ด ํƒ์ƒ‰ํ•˜๋ฉด์„œ ์™ผ์ชฝ ์ž์‹๊ณผ์˜ ๊ฑฐ๋ฆฌ, ์˜ค๋ฅธ์ชฝ ์ž์‹๊ณผ์˜ ๊ฑฐ๋ฆฌ, ๋ถ€๋ชจ์™€์˜ ๊ฑฐ๋ฆฌ ์ค‘์— ์ƒ์œ„ 2๊ฐœ์˜ ๊ฐ’์„ ๊ณจ๋ผ ์ตœ๋Œ€๊ฐ’์„ ๊ฐฑ์‹ ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ์ง„ํ–‰ํ•˜์˜€๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ ์ตœ๋Œ€๊ฐ’์ด 1๋ฒˆ์˜ ๋‹ค๋ฅธ ์ค„๊ธฐ์™€ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š”์ง€(notCompleted), ์•„๋‹ˆ๋ฉด ์ด๋ฏธ ์™„์„ฑ๋œ ์ง€๋ฆ„์ธ์ง€(completed) ํŒ๋ณ„ํ•˜๋Š” flag๋ฅผ ํ†ตํ•ด ์ตœ๋Œ€ ์ง€๋ฆ„์„ ๊ตฌํ•˜๋ ค๊ณ  ํ–ˆ๋‹ค. ์ด ๋ฐฉ๋ฒ•์ด ์ž˜๋ชป๋œ ์ด์œ ๋Š” ๋จผ์ € ๋ฌธ์ œ์—์„œ ์ด์ง„ ํŠธ๋ฆฌ๋ผ๋Š” ์กฐ๊ฑด์ด ์—†๋Š”๋ฐ ์ด์ง„ํŠธ๋ฆฌ๋ผ๊ณ  ๊ฐ€์ •ํ•˜๊ณ  ํ’€์—ˆ๊ธฐ ๋•Œ๋ฌธ์ด๊ณ , ๋˜ํ•œ ์œ„์˜ ๊ทธ๋ž˜ํ”„์—์„œ 4-7 : 100 / 4-8 : 100์œผ๋กœ ์ˆ˜์ •ํ•œ ๊ฒฝ์šฐ ์™ผ์ชฝ ์ค„๊ธฐ์˜ ์ตœ๋Œ€๊ฐ’์ด 200์ด ๋‚˜์™€์•ผํ•˜๋Š”๋ฐ 4์˜ ๋ถ€๋ชจ๋…ธ๋“œ์ธ 2๊ฐ€ ์ž์‹์ด ํ•˜๋‚˜๋ฐ–์— ์—†๊ธฐ ๋•Œ๋ฌธ์— 200 + 5๋กœ ๊ฐฑ์‹ ๋˜๋Š” ๋ฌธ์ œ.. 2021. 3. 6.
[๊ฐœ๋…์ •๋ฆฌ] ์Šค์œ„ํ•‘ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์Šค์œ„ํ•‘ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ž€ ํŠน์ • ๊ธฐ์ค€์— ๋”ฐ๋ผ ์ •๋ ฌ๋œ ์ˆœ์„œ๋Œ€๋กœ ๋ฌธ์ œ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ์Šค์œ„ํ•‘ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•ด์•ผํ•˜๋Š” ๋ฌธ์ œ๋“ค์˜ ํŠน์ง•์€ ๋Ÿฌํ”„ํ•œ ๋ฐฉ๋ฒ• (์ผ๋ฐ˜์ ์œผ๋กœ O(N^2)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ–๋Š” ๋ฐฉ๋ฒ•)์œผ๋กœ๋Š” ํ•ด๊ฒฐ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋ฉฐ, DP๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ์—๋Š” ๋ฉ”๋ชจ์ด์ œ์ด์…˜ ํ•ด์•ผํ•  ์ˆ˜๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์€ ๊ฒฝ์šฐ๊ฐ€ ์ผ๋ฐ˜์ ์ด๋‹ค. ์Šค์œ„ํ•‘ ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ’€ ๊ฒฝ์šฐ, ํ•ด๋‹น ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” ์ •๋ ฌ์—์„œ ๋ฐœ์ƒํ•˜๋Š” O(NlogN)์•ˆ์—์„œ ํ•ด๊ฒฐ๋œ๋‹ค. ๋ฐฑ์ค€ - 8982. ์‚ฌ๋ƒฅ๊พผ ์ผ๋ฐ˜์ ์ธ ๋ฐฉ๋ฒ•์œผ๋กœ ํ’€๊ฒŒ๋˜๋ฉด O(N*M)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ฐ€์ง€๊ฒŒ ๋˜๊ณ  ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ๊ทธ๋ ‡๋‹ค๊ณ  ์ขŒํ‘œ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๊ธฐ์–ตํ•  ์ˆ˜๋„ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์Šค์œ„ํ•‘ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ†ตํ•ด ํ•ด๊ฒฐํ•ด์•ผ ํ•œ๋‹ค. ๋จผ์ €, ์‚ฌ๋Œ€์™€ ๋™๋ฌผ์„ ๋ชจ๋‘ x์ถ• ์ˆœ์„œ๋กœ ์ •๋ ฌํ•˜๊ณ  ๋™๋ฌผ์„ ๊ธฐ์ค€์œผ๋กœ ์‚ฌ๋ƒฅ์ด ๊ฐ€๋Šฅํ•œ์ง€ ํ™•์ธํ•œ๋‹ค. ํ™•์ธ ๊ณผ์ •์€ ๋™.. 2021. 2. 26.
[๋ฐฑ์ค€] 1987. ์•ŒํŒŒ๋ฒณ ํ’€์ด ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ DFS๋กœ ํƒ์ƒ‰ํ•˜๋ฉฐ ์ด์ „์— ๋ฐฉ๋ฌธํ•œ ์•ŒํŒŒ๋ฒณ์ธ ๊ฒฝ์šฐ ๊ฐ€์ง€์น˜๊ธฐ๋ฅผ ์ง„ํ–‰ํ•˜์—ฟ๋‹ค. ์ด ๋•Œ ์ด์ „ ๋ฐฉ๋ฌธ ๋…ธ๋“œ๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ์ดˆ๊ธฐ์—๋Š” ArrayList๋ฅผ ์‚ฌ์šฉํ–ˆ์ง€๋งŒ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•˜์˜€๊ณ  ์ด์— ๋Œ€ํ•œ ์ด์œ ๊ฐ€ ArrayList์˜ remove ๊ณผ์ •์—์„œ O(N)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ ๋ฐœ์ƒํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋ผ๊ณ  ํŒ๋‹จํ•˜์˜€๋‹ค. ๊ทธ๋ž˜์„œ ์ด์ „ ๋ฐฉ๋ฌธ ์•ŒํŒŒ๋ฒณ์„ ์œ ์ง€ํ•˜๋Š” ๋ฐฉ์‹์„ StringBuilder๋ฅผ ์‚ฌ์šฉํ•˜์˜€๊ณ  ๋งˆ์ง€๋ง‰ ์ธ๋ฑ์Šค๋ฅผ ์‚ญ์ œํ•จ์œผ๋กœ์จ ์‹œ๊ฐ„ ์ดˆ๊ณผ๋ฅผ ํ•ด๊ฒฐํ•˜์˜€๋‹ค. ํ•˜์ง€๋งŒ ์ด ๋ฐฉ๋ฒ•๋„ ๋„ˆ๋ฌด ๋Š๋ ค์„œ ์ด๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ๋น„ํŠธ๋งˆ์Šคํ‚น์„ ์‚ฌ์šฉํ•˜์˜€๊ณ  ๋ชจ๋“  ๊ฒฝ์šฐ์— distance๋ฅผ ๋น„๊ตํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์œ ๋งํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋งŒ distance๋ฅผ ๋น„๊ตํ•˜๋„๋ก ๊ฐœ์„ ํ•˜์˜€๋‹ค. ๋น„ํŠธ๋งˆ์Šคํ‚น์œผ๋กœ๋Š” ํ˜„์žฌ ์•ŒํŒŒ๋ฒณ - 'A'๋ฅผ ํ•ด์คŒ์œผ๋กœ์จ ํฌํ•จ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜์˜€๋‹ค.. 2021. 2. 19.
[๋ฐฑ์ค€] 3109. ๋นต์ง‘ ํ’€์ด DFS๋ฅผ ํ†ตํ•ด ํƒ์ƒ‰์„ ์ง„ํ–‰ํ•  ๋•Œ ์ตœ๋Œ€๊ฐ’์„ ์ฐพ๋Š” ๊ฒฝ์šฐ๋Š” ๋Œ€๋ถ€๋ถ„ ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ํ™•์ธํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์œ ๋งํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๊ฐ€์ง€์น˜๊ธฐํ•˜๋Š” ๋ฐฑํŠธ๋ž˜ํ‚น ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค. ํ•˜์ง€๋งŒ ์ด ๋ฌธ์ œ๋Š” ์‹œ์ž‘ ์ ์€ ๊ฐ€์žฅ ์œ„์—์„œ๋ถ€ํ„ฐ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ตœ์„ ์˜ ๋ฐฉ๋ฒ•์ด ๋˜๋Š” ๊ทธ๋ฆฌ๋””ํ•œ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜์˜€๊ณ  ์ด๋ฅผ ํ†ตํ•ด ์œ ๋งํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ํƒ์ƒ‰์„ ์ข…๋ฃŒํ•˜๋Š” ๊ฒฝ์šฐ ๋˜๋Œ์•„๊ฐ€๋Š” ๋ฐฑํŠธ๋ž˜ํ‚น ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜์˜€๋‹ค. ์ฒซ๋ฒˆ์จฐ ์—ด์˜ 1๋ฒˆ์จฐ ํ–‰๋ถ€ํ„ฐ ํƒ์ƒ‰์„ ์ง„ํ–‰ํ•˜๊ณ , ๋งŒ์•ฝ C๋ฒˆ์งธ ํ–‰์— ๋„์ฐฉํ–ˆ๋‹ค๋ฉด ์ด๋ฒˆ ์‹œ์ž‘ ์œ„์น˜์—์„œ์˜ ํƒ์ƒ‰์„ ์ข…๋ฃŒํ•œ๋‹ค. ๋‹ค์Œ ์œ„์น˜๋„ ๋™์ผํ•˜๊ฒŒ ์ง„ํ–‰ํ•˜๋Š”๋ฐ ๋งŒ์•ฝ ์‹คํŒจํ•œ๋‹ค๊ณ  ํ•˜๋”๋ผ๋„ ๋ฐฉ๋ฌธํ•œ ์œ„์น˜์— ๋Œ€ํ•œ ์ฒดํฌ๋ฅผ ๋˜๋Œ๋ฆฌ์ง€ ์•Š๋Š”๋‹ค. ์™œ๋ƒํ•˜๋ฉด ํ•ด๋‹น ์œ„์น˜์—์„œ ํŒŒ์ดํ”„๋ฅผ ์™„์„ฑํ•˜์ง€ ๋ชปํ–ˆ๋‹ค๊ณ  ํ•˜๋”๋ผ๋„ ๋’ค ์„ ํƒ์ง€์—์„œ ํ•ด๋‹น ๋ฐฉํ–ฅ์€ ๋™์ผํ•˜๊ฒŒ ์‹ค.. 2021. 2. 19.