๋ชฉ๋ก๐Ÿ‘ฉ‍๐Ÿ’ป ์ปดํ“จํ„ฐ ๊ตฌ์กฐ/Computer Science (11)

๐Ÿ˜Ž ๊ณต๋ถ€ํ•˜๋Š” ์ง•์ง•์•ŒํŒŒ์นด๋Š” ์ฒ˜์Œ์ด์ง€?

[Coding Interview University] ๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ : ์ด๋ก  ๋ฐ ๊ตฌํ˜„

๐Ÿซง ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ : ์ฐจ๋ก€๋กœ ์—ฐ๊ฒฐ๋œ ๋…ธ๋“œ๋ฅผ ํ‘œํ˜„ํ•ด์ฃผ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ : ๋‹จ) ๋ฐฐ์—ด๊ณผ ๋‹ฌ๋ฆฌ ํŠน์ • ์ธ๋ฑ์Šค๋ฅผ ์ƒ์ˆ˜ ์‹œ๊ฐ„์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋‹ค (k๋ฒˆ์งธ ์›์†Œ๋ฅผ ์ฐพ๊ณ ์‹ถ๋‹ค๋ฉด ์ฒ˜์Œ๋ถ€ํ„ฐ k๋ฒˆ ๋ฃจํ”„ ๋Œ์•„์•ผํ•จ) : ์žฅ) ๋ฆฌ์ŠคํŠธ์˜ ์‹œ์ž‘ ์ง€์ ์—์„œ ์•„์ดํ…œ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œ ์—ฐ์‚ฐ์„ ์ƒ์ˆ˜ ์‹œ๊ฐ„์— ํ•  ์ˆ˜ ์žˆ๋‹ค ๋‹จ๋ฐฉํ–ฅ ๊ฐ ๋…ธ๋“œ๋Š” ๋‹ค์Œ ๋…ธ๋“œ ๊ฐ€๋ฆฌํ‚ด ์–‘๋ฐฉํ–ฅ ๊ฐ ๋…ธ๋“œ๋Š” ๋‹ค์Œ ๋…ธ๋“œ์™€ ์ด์ „ ๋…ธ๋“œ๋ฅผ ํ•จ๊ป˜ ๊ฐ€๋ฆฌํ‚ด ๐Ÿ’– (๋‹จ๋ฐฉํ–ฅ) ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ ๋งŒ๋“ค๊ธฐ class Node { Node next = null; int data; public Node(int d) { data = d; } void appendToTail(int d) { Node end = new Node(d); Node n = this; while (n.next != null) { n = n.next;..

[Coding Interview University] ๋ฐฐ์—ด : ์ด๋ก  ๋ฐ ๊ตฌํ˜„

๐Ÿซง ๋ฐฐ์—ด๊ณผ ๋ฌธ์ž์—ด โค๏ธ ํ•ด์‹œํ…Œ์ด๋ธ” (hash table) : ํšจ์œจ์ ์ธ ํƒ์ƒ‰์„ ์œ„ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ๋กœ์„œ, key๋ฅผ value ์— ๋Œ€์‘์‹œํ‚ด : ์ตœ์•…์˜ ๊ฒฝ์šฐ O(n) // n์€ ํ‚ค์˜ ๊ฐœ์ˆ˜ : ์ตœ์„ ์˜ ๊ฒฝ์šฐ O(1) 1) ํ‚ค์˜ ํ•ด์‹œ ์ฝ”๋“œ ๊ณ„์‚ฐ ํ‚ค์˜ ์ž๋ฃŒํ˜•์€ ๋ณดํ†ต int or long ํ‚ค์˜ ๊ฐœ์ˆ˜ ๋ฌดํ•œ (int ๋Š” ์œ ํ•œ) 2) hash(key) % array_length ๋ฐฉ์‹์œผ๋กœ ํ•ด์‹œ ์ฝ”๋“œ ์ด์šฉํ•ด ๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค ๊ตฌํ•จ ์„œ๋กœ ๋‹ค๋ฅธ ๋‘ ๊ฐœ์˜ ํ•ด์‹œ ์ฝ”๋“œ๊ฐ€ ๊ฐ™์€ ์ธ๋ฑ์Šค ๊ฐ€๋ฆฌํ‚ฌ ์ˆ˜ ์žˆ์Œ 3) ๋ฐฐ์—ด์˜ ๊ฐ ์ธ๋ฑ์Šค์—๋Š” ํ‚ค์™€ ๊ฐ’์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ ์กด์žฌ ํ‚ค์™€ ๊ฐ’์„ ํ•ด๋‹น ์ธ๋ฑ์Šค์— ์ €์žฅ (๋ฐ˜๋“œ์‹œ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ ์ด์šฉ!) ๐Ÿ’ฅ ์ถฉ๋Œ : ์„œ๋กœ ๋‹ค๋ฅธ ๋‘ ๊ฐœ์˜ ํ‚ค๊ฐ€ ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ฑฐ๋‚˜, ์„œ๋กœ ๋‹ค๋ฅธ ๋‘ ๊ฐœ์˜ ํ•ด์‹œ ์ฝ”๋“œ๊ฐ€ ๊ฐ™์€ ์ธ๋ฑ์Šค๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฒฝ์šฐ ⇒ ..

[Coding Interview University] ๋น…์˜ค(Big-O)ํ‘œ๊ธฐ๋ฒ•

๐Ÿซง ๋น„์œ ํ•˜๊ธฐ ํŒŒ์ผ ํฌ๊ธฐ๊ฐ€ ์ž‘๋‹ค๋ฉด ? ์˜จ๋ผ์ธ์œผ๋กœ ์ „์†ก ํŒŒ์ผ ํฌ๊ธฐ๊ฐ€ ๋ฌด์ง€๋ง‰ํ•˜๊ฒŒ ํฌ๋‹ค๋ฉด ? ์šด์ „ or ๋น„ํ–‰๊ธฐ๐Ÿš€ ๐Ÿซง ์‹œ๊ฐ„ ๋ณต์žก๋„ ์ ๊ทผ์  ์‹คํ–‰ ์‹œ๊ฐ„ (asymptotic runtime), big-O ์‹œ๊ฐ„ ๊ฐœ๋… ์˜จ๋ผ์ธ ์ „์†ก : O(s), s๋Š” ํŒŒ์ผ์˜ ํฌ๊ธฐ ํŒŒ์ผ์˜ ํฌ๊ธฐ๊ฐ€ ์ฆ๊ฐ€ํ•จ์— ๋”ฐ๋ผ ์ „์†ก ์‹œ๊ฐ„์ด ์„ ํ˜•์ ์œผ๋กœ ์ฆ๊ฐ€ ๋น„ํ–‰๊ธฐ ์ „์†ก : ํŒŒ์ผ์˜ ํฌ๊ธฐ ์ƒ๊ด€์—†์ด O(1) ์ƒ์ˆ˜์‹œ๊ฐ„๋งŒํผ ์†Œ์š” โค๏ธ big-O : ์‹œ๊ฐ„์˜ ์ƒํ•œ : ๋ฐฐ์—ด์˜ ๋ชจ๋“  ๊ฐ’์„ ์ถœ๋ ฅํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ : O(n) ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, O(n^3) ํ˜น์€ O(n) ๋ณด๋‹ค ํฐ ์–ด๋–ค ์ˆ˜ํ–‰ ์‹œ๊ฐ„์œผ๋กœ ๊ฐ€๋Šฅ โค๏ธ big-Ω (omega) : ๋“ฑ๊ฐ€ or ํ•˜ํ•œ : Ω(n) ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, Ω(log N) ํ˜น์€ Ω(1) ๋กœ ํ‘œํ˜„ ๊ฐ€๋Šฅ โค๏ธ big-θ (theta) : O์™€ Ω ๋‘˜ ๋‹ค ์˜๋ฏธ (๋”ฑ ๋งž๋Š”..