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

๋ฐฑ์ค€4

[Week04] ์•Œ๊ณ ๋ฆฌ์ฆ˜ - ๋น„ํŠธ ๋งˆ์Šคํ‚น ๋ฐฑ์ค€ ์™ธํŒ์› ์ˆœํšŒ ๋ฌธ์ œ(TSP)๋ฅผ ํ’€๋ ค๋ฉด ๋น„ํŠธ ๋งˆ์Šคํ‚น์— ๊ด€ํ•œ ๊ฐœ๋…์ด ํ•„์š”ํ•˜์—ฌ ๊ณต๋ถ€ํ•˜๊ฒŒ๋˜์—ˆ๋‹ค. ํ•ด๋‹น ๋ฌธ์ œ https://www.acmicpc.net/problem/2098 2098๋ฒˆ: ์™ธํŒ์› ์ˆœํšŒ ์ฒซ์งธ ์ค„์— ๋„์‹œ์˜ ์ˆ˜ N์ด ์ฃผ์–ด์ง„๋‹ค. (2 ≤ N ≤ 16) ๋‹ค์Œ N๊ฐœ์˜ ์ค„์—๋Š” ๋น„์šฉ ํ–‰๋ ฌ์ด ์ฃผ์–ด์ง„๋‹ค. ๊ฐ ํ–‰๋ ฌ์˜ ์„ฑ๋ถ„์€ 1,000,000 ์ดํ•˜์˜ ์–‘์˜ ์ •์ˆ˜์ด๋ฉฐ, ๊ฐˆ ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ๋Š” 0์ด ์ฃผ์–ด์ง„๋‹ค. W[i][j]๋Š” ๋„์‹œ i์—์„œ j www.acmicpc.net keywords ๋น„ํŠธ๋งˆ์Šคํ‚น dp, ๋น„ํŠธ๋งˆ์Šคํ‚น bfs, ๋น„ํŠธ๋งˆ์Šคํฌ ์ˆœ์—ด, ๋น„ํŠธ๋งˆ์Šคํฌ ์กฐํ•ฉ ๋น„ํŠธ ๋งˆ์Šคํ‚น ์ปดํ“จํ„ฐ๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ ๋ชจ๋“  ์ž๋ฃŒ๋ฅผ ์ด์ง„์ˆ˜๋กœ ํ‘œํ˜„ํ•œ๋‹ค. ์ด์™€ ๊ฐ™์€ ํŠน์„ฑ์„ ์ด์šฉํ•ด ์ •์ˆ˜์˜ ์ด์ง„์ˆ˜ ํ‘œํ˜„์„ ์ž๋ฃŒ๊ตฌ์กฐ๋กœ ์“ฐ๋Š” ๊ธฐ๋ฒ•์ด๋‹ค. check = [False] * .. 2022. 4. 26.
[Week03] ์•Œ๊ณ ๋ฆฌ์ฆ˜ - DFS / BFS ๋ฐฑ์ค€ ๋ฌธ์ œ ๋‘ ๋ฌธ์ œ๋ฅผ ๊ตฌ๋ถ„ํ•˜๋Š” ๊ธฐ์ค€์ด ์•ฝ๊ฐ„ ๋ชจํ˜ธํ•˜์ง€๋งŒ.. ๋ฌธ์ œ๋ฅผ ํ’€๋ฉด์„œ ๋งŒ๋‚ฌ๋˜ ๋ช‡๋ช‡ ์œ ํ˜•๋“ค์„ ๊นŒ๋จน์ง€์•Š๊ธฐ ์œ„ํ•ด ์ •๋ฆฌํ•ด๋‘”๋‹ค. DFS / ๋ฐฑํŠธ๋ž˜ํ‚น nums = [1,2,3] result = [] permute = [] def dfs(): if len(permute) == len(nums) : result.append(permute[:]) return for i in range(len(nums)) : if nums[i] not in permute : permute.append(nums[i]) dfs() permute.pop() dfs() print(result) DFS 25731๋ฒˆ : ๋น™์‚ฐ https://www.acmicpc.net/problem/2573 2573๋ฒˆ: ๋น™์‚ฐ ์ฒซ ์ค„์—๋Š” ์ด์ฐจ์› ๋ฐฐ์—ด์˜ ํ–‰์˜ ๊ฐœ์ˆ˜์™€ ์—ด์˜ ๊ฐœ์ˆ˜๋ฅผ.. 2022. 4. 21.
[Week03] ์•Œ๊ณ ๋ฆฌ์ฆ˜ - ์œ ๋‹ˆ์˜จ ํŒŒ์ธ๋“œ ํŠธ๋ฆฌ ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜ - ์œ ๋‹ˆ์˜จ ํŒŒ์ธ๋“œ Union Find โœ… ๊ฐœ๋… / ์›๋ฆฌ : ๋Œ€ํ‘œ์ ์ธ ํŠธ๋ฆฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ : ํ•ฉ์ง‘ํ•ฉ ์ฐพ๊ธฐ, ์„œ๋กœ์†Œ ์ง‘ํ•ฉ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ด๋ผ๊ณ ๋„ ๋ถ€๋ฅธ๋‹ค. ์œ ๋‹ˆ์˜จ ํŒŒ์ธ๋“œ๋Š” ์ง‘ํ•ฉ(set)์„ ํ•ฉํ•˜๊ธฐ์œ„ํ•œ ์—ฐ์‚ฐ์ด๋‹ค. ์–‘๋ฑกํ–ฅ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•ด ํ•ฉ์ง‘ํ•ฉ ์—ฐ์‚ฐ ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ์‹œ์ž‘ ๋ณต์žก๋„๊ฐ€ ์•ˆ์ข‹์•„ ํŠธ๋ฆฌ ํ˜•ํƒœ๋ฅผ ํ™œ์šฉํ•œ๋‹ค. ๋ถ€๋ชจ๋ฅผ ๊ฐ€๋ฅดํ‚ค๋Š” ํŠธ๋ฆฌ์ฒ˜๋Ÿผ ๋งํฌ๋ฅผ ๋งŒ๋“ค์–ด ์ง‘ํ•ฉ์„ ํ‘œํ˜„ํ•œ๋‹ค. ํ•˜๋‚˜์˜ ํŠธ๋ฆฌ๊ฐ€ ํ•˜๋‚˜์˜ set์ด๋ฉฐ ํŠธ๋ฆฌ์˜ parents๋ฅผ ์ฐพ์•„ ์˜ฌ๋ผ๊ฐ€ ๋ฃจํŠธ๋ฅผ ๋งŒ๋‚˜๋ฉด ๋ฃจํŠธ๊ฐ’์ด ์ง‘ํ•ฉ์˜ ๋Œ€ํ‘œ๊ฐ’์ด๋‹ค. ๋‘๊ฐœ์˜ ์ง‘ํ•ฉ์— ๋ฃจํŠธ๊ฐ’์„ ์ฐพ์•„์„œ(find) ๋ฃจํŠธ๊ฐ’์ด ๋‹ค๋ฅด๋ฉด ํ•˜๋‚˜์˜ ํŠธ๋ฆฌ๋กœ ๋งŒ๋“ ๋‹ค.(union) > ํŠธ๋ฆฌ ๋†’์ด h๋งŒํผ์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ–๋Š”๋‹ค. ์ง‘ํ•ฉ์˜ ํ•ฉ์ง‘ํ•ฉ ์‹œํ‚จ๋‹ค๋Š” ๊ฐœ๋…์„ ์ƒ๊ฐํ•˜๋ฉด ๋ฌธ์ œ ํ’€๋•Œ ํ—ท๊ฐˆ๋ ค์„œ ์ฃผ์–ด์ง„ ๊ทธ๋ž˜ํ”„์˜ ๋ฃจํŠธ๋ฅผ ์ฐพ๋Š” .. 2022. 4. 20.
[Week02] ์•Œ๊ณ ๋ฆฌ์ฆ˜ - ์ด๋ถ„ํƒ์ƒ‰ [Week02] ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ‚ค์›Œ๋“œ - ์ด๋ถ„ํƒ์ƒ‰, ๋ถ„ํ• ์ •๋ณต, ์Šคํƒ, ํ, ์šฐ์„ ์ˆœ์œ„ ํ ๊ฒ€์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜ - ์„ ํ˜•ํƒ์ƒ‰ / ์ด๋ถ„ ํƒ์ƒ‰ ์ด๋ถ„ํƒ์ƒ‰ ์ •๋ ฌ์ด ๋˜์–ด์žˆ๋Š” ๋ฐฐ์—ด์—์„œ ํŠน์ • ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด์„œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ํ™•์ธํ•˜๋Š” ๋Œ€์‹  ํƒ์ƒ‰์˜ ๋ฒ”์œ„๋ฅผ ์ ˆ๋ฐ˜์œผ๋กœ ์ค„์—ฌ๋‚˜๊ฐ€๋Š” ํƒ์ƒ‰ ๋ฐฉ๋ฒ• ์ด๋ถ„ํƒ์ƒ‰ ์‚ฌ์šฉ์‹œ ์ฃผ์˜์‚ฌํ•ญ ์ฃผ์–ด์ง„ ๋ฐฐ์—ด์€ ์ •๋ ฌ๋˜์–ด์žˆ์–ด์•ผํ•œ๋‹ค. ๋ฌดํ•œ ๋ฃจํ”„์— ๋น ์ง€์ง€์•Š๊ฒŒ mid๊ฐ’์„ ์ž˜ ์ง€์ •ํ•ด์ค€๋‹ค ์ฐจ๋ก€๋กœ ์ฆ๊ฐ€(ํ˜น์€ ๊ฐ์†Œ)์‹œํ‚ค๋ฉด์„œ ํ’€์–ด์•ผํ•˜๋Š” ํƒ์ƒ‰๋ฌธ์ œ์— ํฐ ์ˆ˜์˜ ๋ฒ”์œ„๊ฐ€ ์ฃผ์–ด์ง„๋‹ค๋ฉด ์ด๋ถ„ํƒ์ƒ‰์„ ๋– ์˜ฌ๋ ค๋ณด์ž. ์‹œ๊ฐ„๋ณต์žก๋„ O(logN) โœ… ์ด๋ถ„ํƒ์ƒ‰ ๊ตฌํ˜„ํ•˜๊ธฐ while๋ฌธ์„ ์ด์šฉํ•˜์—ฌ ๊ตฌํ˜„ def binary_serch(a,n_list) : st = 0 en = n-1 while st a : en = mid -1 else : st = mid + .. 2022. 4. 9.