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

์ž๋ฃŒ๊ตฌ์กฐ15

4. STL ๋”ฐ๋ผ์žก๊ธฐ - ์ด์ค‘ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ (Doubly Linked List) ๊ตฌํ˜„ ์ด์ค‘ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋ž€ ? ์—ฌ๊ธฐ์„œ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์— ๋Œ€ํ•œ ๊ฐœ๋…์„ ์•Œ๊ฒŒ ๋˜์—ˆ๊ณ  ์—ฌ๊ธฐ์„œ ๋‹จ์ˆœ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ตฌํ˜„ํ•ด๋ณด์•˜๋‹ค. ๋˜, ์•ž์„  ํฌ์ŠคํŒ…์—์„œ ์—ฐ๊ฒฐ์— ๋Œ€ํ•œ ๋ฐฉ๋ฒ•์„ ๋งํ–ˆ๋Š”๋ฐ '์ด์ค‘ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ' ๋Š” ์–‘๋ฐฉํ–ฅ(์ด์ค‘)์œผ๋กœ ๊ตฌ์„ฑ๋œ ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค. ์ฆ‰, ์‹ฑ๊ธ€ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋Š” ์ฝ”์Šค ์—ฌํ–‰์ด๋ผ๋ฉด ์ด์ค‘ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋Š” ์ž์œ  ์—ฌํ–‰์ด๋‹ค. ์ด์— ๋Œ€ํ•ด์„  ๋‚ด๊ฐ€ ์ƒ๊ฐํ•œ ์˜ˆ์‹œ์ด๊ธฐ ๋•Œ๋ฌธ์— ํ•œ ๋ฒˆ ์ƒ๊ฐํ•ด๋ณด๊ณ  ๋น„์Šทํ•œ ์˜ˆ์‹œ๋ฅผ ์ฐพ์•„์„œ ๋ณธ์ธ๋งŒ์˜ ๊ฐœ๋…์œผ๋กœ ์ดํ•ดํ•˜๊ธธ.. ์ด๋ฒˆ STL ๋”ฐ๋ผ์žก๊ธฐ ํฌ์ŠคํŠธ๋Š” standard library์ธ list๋ฅผ ๋งŒ๋“ค์–ด๋ณด๊ฒ ๋‹ค. ๋จผ์ €, list์— ์–ด๋–ค ๊ธฐ๋Šฅ์ด ์žˆ๋Š”์ง€ ํ•œ ๋ฒˆ ์•Œ์•„๋ณด์ž. ์šฐ๋ฆฌ๋Š” STL list์— ์–ด๋–ค ๊ธฐ๋Šฅ์ด ๊ตฌํ˜„๋˜์–ด์žˆ๋Š”์ง€ ํŒŒ์•…ํ•œ ๋’ค์— ์ด๋ฅผ ์ •๋ฆฌํ•  ๊ฒƒ์ด๋‹ค. ๊นƒํ—ˆ๋ธŒ ์ด์Šˆ์— ๊ตฌํ˜„ํ•  ๋‚ด์šฉ์„ ์ž‘์„ฑํ•˜๊ณ  ์ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๋ ˆํŒŒ์ง€ํ† ๋ฆฌ์— ์ €์žฅํ• .. 2024. 2. 7.
3. STL ๋”ฐ๋ผ์žก๊ธฐ - ๋‹จ์ˆœ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ (Singly Linked List) ๊ตฌํ˜„ ๋‹จ์ˆœ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋ž€ ? ์ด์ „ 2. Linked List (์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ) ํฌ์ŠคํŠธ์—์„œ ์„ค๋ช…๋œ ๋‚ด์šฉ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๋Š” ๋ฐ์ดํ„ฐ ๊ฐ„์— '์—ฐ๊ฒฐ'๋˜์–ด ์žˆ๋‹ค๊ณ  ํ–ˆ๋Š”๋ฐ, ์—ฐ๊ฒฐ์€ ์•„๋ž˜์™€ ๊ฐ™์ด ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค. A ์—์„œ B๋กœ ๊ฐˆ ๋•Œ(๋‹จ๋ฐฉํ–ฅ), A ใ…ก> B ๋˜๋Š” B ใ…ก> A A ์—์„œ B๋กœ ๊ฐ€๊ณ  B์—์„œ๋„ A๋กœ ๊ฐˆ ์ˆ˜ ์žˆ์„ ๋•Œ(์–‘๋ฐฉํ–ฅ), A B ๋˜๋Š” A ใ…ก B ๋‹จ์ˆœ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๋Š” ์ด ์ค‘, ๋‹จ๋ฐฉํ–ฅ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋‹จ์ˆœ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ์ด๋‹ค. ๋Œ€์‹ , ์ฃผ์˜ํ•  ์ ์ด ์žˆ๋‹ค. A๊ฐ€ ์‹œ์ž‘์ , B๊ฐ€ ์ข…์ ์ธ ๊ฒฝ์šฐ์—๋Š” B์—์„œ A๋กœ ๊ฐˆ ์ˆ˜ ์—†๋‹ค. ์ฆ‰, ์ˆœํ™˜์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์ ์ด๋‹ค. A ใ…ก> B ใ…ก> A ใ…ก > B ( X ) A ใ…ก> B ใ…ก> ๋ ( O ) ๋‹จ์ˆœ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๋Š” ์ด๊ฒŒ ๋์ด๋‹ค. ๊ทธ๋Ÿผ, ์ฃผ๋กœ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉ๋˜๊ณ .. 2024. 2. 4.
2. ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ (Linked List) ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋ž€ ? ๋จผ์ €, List๋ฅผ ์ƒ๊ฐํ•˜๋ฉด ์ญ‰ ~ ๋‚˜์—ด๋˜์–ด ์žˆ๋Š” ๊ฒƒ์ด ๋– ์˜ค๋ฅด์‹œ๋‚˜์š”? ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋Š” ๋ง ๊ทธ๋Œ€๋กœ ์ญ‰ ~ ๋‚˜์—ด๋˜์–ด ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ฐ์ดํ„ฐ๋ฅผ ์„œ๋กœ ์—ฐ๊ฒฐํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ด์ฃ . ์–ด? ์ญ‰ ~ ๋‚˜์—ด๋˜์–ด์žˆ๊ณ  ์—ฐ๊ฒฐ๋˜์–ด์žˆ๋Š” ๊ฒƒ์€ '๋ฐฐ์—ด' ์•„๋‹Œ๊ฐ€์š”? ๋งž์Šต๋‹ˆ๋‹ค. ์ž๋ฃŒ๊ตฌ์กฐ์˜ ๊ธฐ๋ณธ์ด์ž ๋ฐ์ดํ„ฐ๊ฐ€ ์ˆœ์ฐจ์ ์œผ๋กœ ๋‚˜์—ด๋˜์–ด ์žˆ๋Š” ๊ฒƒ์€ ๋ฐฐ์—ด์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿผ ์—ฐ์†๋œ ๋ฐ์ดํ„ฐ๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” ๋ฐฐ์—ด(Array)๊ฐ€ ์žˆ๋Š”๋ฐ ์™œ Linked List๋ฅผ ์‚ฌ์šฉํ•˜๋‚˜์š”? ๋ฐฐ์—ด๊ณผ Linked List์—๋Š” ์—„์—ฐํ•œ ์ฐจ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์•ž์„  ํฌ์ŠคํŒ…์—์„œ ๊ฐ ์ž๋ฃŒ๊ตฌ์กฐ๋Š” ํ•„์š”์— ๋”ฐ๋ฅธ ์‚ฌ์šฉ์ฒ˜๊ฐ€ ์žˆ๊ณ , ์‚ฌ์šฉ์ž๊ฐ€ ์œ ๋™์ ์œผ๋กœ ์‚ฌ์šฉํ•ด์•ผ ํ•จ์„ ํ‘œํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋ฐฐ์—ด์ด๋ผ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์— ๋Œ€ํ•ด ์•Œ๊ณ  Linked List๋ผ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์™€์˜ ์ฐจ์ด์ ์„ ์•Œ์•„์•ผํ•ฉ๋‹ˆ๋‹ค. ์ฐจ์ด์ ์„.. 2024. 2. 4.
[์ด๋ถ„ ํƒ์ƒ‰] ์ด๋ถ„ ํƒ์ƒ‰(Binary Search) ์ด๋ž€ ? ์ด๋ถ„ ํƒ์ƒ‰ ๋‘ ์ด, ๋‚˜๋ˆŒ ๋ถ„์„ ์จ์„œ ์ด๋ถ„์ธ๊ฐ€? ์ •๋‹ต, ์ด๋ถ„ ํƒ์ƒ‰์€ ๋‘๊ฐœ๋กœ ๋‚˜๋ˆ„์–ด์„œ ํƒ์ƒ‰ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, 1๋ถ€ํ„ฐ 10๊นŒ์ง€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ด๋ณด์ž. {1, 2, 3, 4, 5, 6, 7, 8, 9, 10} ์šฐ๋ฆฌ๊ฐ€ 8์„ ์ฐพ์„ ๋•Œ, ๋ˆˆ์œผ๋กœ ๋ฐ”๋กœ ๋ณด์ด๋‹ˆ๊นŒ ์œ„์น˜๋ฅผ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ช‡ ๋ฒˆ์งธ์— ์žˆ๋Š”๊ฐ€? ๋ฐฐ์—ด์€ 0๋ฒˆ์งธ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋‹ˆ 7๋ฒˆ์งธ์— ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ์ปดํ“จํ„ฐ ๋ฐฐ์—ด ์ธ๋ฑ์Šค ๊ฐœ๋…์ด ์—†๋Š” ์‚ฌ๋žŒ๋“ค์€ 8๋ฒˆ์งธ๋ผ๊ณ  ๋‹ตํ•  ๊ฒƒ์ด๋‹ค. ์ฆ‰, O(1) ์‹œ๊ฐ„์ด๋‹ค. ๊ทธ๋Ÿผ, {1, 4, 7, 10, 12, 23, 30, 35, 100, 120} ์ด ์žˆ์„ ๋•Œ, 35์˜ ์œ„์น˜๋Š”? ์šฐ๋ฆฌ๋Š” ์•ž์—์„œ ๊ฐ’์„ ์„ธ์–ด๊ฐ€๋ฉด์„œ ๋ช‡ ๋ฒˆ์งธ์— ์žˆ๋Š”์ง€ ์•Œ ๊ฒƒ์ด๋‹ค. ์ฆ‰, O(N) ์‹œ๊ฐ„์ด๋‹ค. 100๋งŒ๊ฐœ์˜ ์ˆซ์ž๊ฐ€ ์žˆ๋‹ค๋ฉด? ์šฐ๋ฆฌ๋Š” 100๋งŒ๊ฐœ๋ฅผ ์ผ์ผ์ด ์„ธ๋‹ค๊ฐ€.. 2024. 2. 1.
๋ฐฑ์ค€ - [BOJ 12015] ๊ฐ€์žฅ ๊ธด ์ฆ๊ฐ€ํ•˜๋Š” ๋ถ€๋ถ„ ์ˆ˜์—ด 2 ๋ฐฑ์ค€ ์˜จ๋ผ์ธ ์ ธ์ง€(BOJ)์—์„œ ์ œ๊ณต ๋˜๋Š” 12015๋ฒˆ ๋ฌธ์ œ๋Š” ์„ ํ–‰ ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค. ๊ฐ€์žฅ ๊ธด ์ฆ๊ฐ€ํ•˜๋Š” ๋ถ€๋ถ„ ์ˆ˜์—ด ๋‚˜๋Š” ์œ„ ๋ฌธ์ œ๋ฅผ ๋จผ์ € ํ’€์–ด๋ณด๊ณ  ์˜ค๋Š” ๊ฒƒ์„ ์ถ”์ฒœํ•œ๋‹ค. ํ•ด๋‹น ๋ฌธ์ œ๋Š” ์ตœ์žฅ ์ฆ๊ฐ€ ๋ถ€๋ถ„ ์ˆ˜์—ด(LIS, Longest Increasing Subsequence)๋กœ ์œ ๋ช…ํ•œ ๋ฌธ์ œ์ด๋‹ค. ๋ฌธ์ œ ์ˆ˜์—ด A๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ๊ฐ€์žฅ ๊ธด ์ฆ๊ฐ€ํ•˜๋Š” ๋ถ€๋ถ„ ์ˆ˜์—ด์„ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ˆ˜์—ด A = {10, 20, 10, 30, 20, 50} ์ธ ๊ฒฝ์šฐ์— ๊ฐ€์žฅ ๊ธด ์ฆ๊ฐ€ํ•˜๋Š” ๋ถ€๋ถ„ ์ˆ˜์—ด์€ A = {10, 20, 10, 30, 20, 50} ์ด๊ณ , ๊ธธ์ด๋Š” 4์ด๋‹ค. ์ž…๋ ฅ ์ฒซ์งธ ์ค„์— ์ˆ˜์—ด A์˜ ํฌ๊ธฐ N (1 โ‰ค N โ‰ค 1,000,000)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„์—๋Š” ์ˆ˜์—ด A๋ฅผ ์ด๋ฃจ๊ณ  ์žˆ๋Š” Ai๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (1 โ‰ค Ai โ‰ค.. 2024. 2. 1.
1. ์ž๋ฃŒ๊ตฌ์กฐ๋ž€? Data Structure ์ปดํ“จํ„ฐ๋Š” Data์˜ ์ง‘ํ•ฉ์ฒด์ž…๋‹ˆ๋‹ค. ์ปดํ“จํ„ฐ์—์„œ Data๋ฅผ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์ด ์žˆ๊ฒ ์ฃ ? ์‹ค์ œ๋กœ ์‚ฌ๋žŒ์ด ์ƒ๊ฐํ•˜๊ธฐ์— ์ง๊ด€์ ์ด๊ฑฐ๋‚˜ ์ˆ˜ํ•™์ , ๋…ผ๋ฆฌ์ ์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ์‚ฌ๊ณ ๋ฅผ ์ปดํ“จํ„ฐ์˜ ์ž…์žฅ์—์„œ ํ‘œํ˜„ํ•œ ๊ฒƒ์ด ์ž๋ฃŒ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. ์ปดํ“จํ„ฐ๋Š” ์‚ฌ๋žŒ๊ณผ ๋‹ค๋ฅด๊ฒŒ ์ƒ๊ฐ์„ ํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก '๋ช…๋ น'์„ ํ•ด์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. How ? ์–ด๋–ป๊ฒŒ ์ปดํ“จํ„ฐ์—๊ฒŒ ๋ช…๋ น์„ ํ•ด์•ผ ํ• ๊นŒ์š”? ๊ธฐ๋ณธ์ ์œผ๋กœ ์ปดํ“จํ„ฐ๋Š” ๋ณ€์ˆ˜์— ๊ฐ’์„ ํ• ๋‹นํ•˜๊ณ  ์ž…, ์ถœ๋ ฅ์„ ํ†ตํ•ด ์šฐ๋ฆฌ๊ฐ€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋•Œ, 1, 2, 3, 4, 5, 7 ์ด ์žˆ์„ ๋•Œ '6'์„ ์ถ”๊ฐ€ํ•˜๋Š”๋ฐ ์ˆœ์„œ๋ฅผ ์œ ์ง€ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๊ฒฐ๊ณผ๋ฅผ 1 2 3 4 5 6 7๋กœ ๋‚˜ํƒ€๋‚ด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋ฐฉ๋ฒ•์€ ๋ฌด์ˆ˜ํžˆ ๋งŽ์€๋ฐ์š”. vector arr = {1, 2, 3, 4, 5, 7};.. 2024. 1. 26.