๊ด€๋ฆฌ ๋ฉ”๋‰ด

๋ชฉ๋ก์ „์ฒด ๊ธ€ (199)

JUINTINATION

ํ•ด์‹œ ํ…Œ์ด๋ธ”(Hash Table)

ํ•ด์‹œ ํ…Œ์ด๋ธ”์ด๋ž€? ํ•ด์‹œ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž…๋ ฅ ํ‚ค ๊ฐ’์œผ๋กœ๋ถ€ํ„ฐ ํ•ด์‹œ ๊ฐ’์„ ์–ป์–ด ๊ทธ๊ฒƒ์„ ์ธ๋ฑ์Šค๋กœ ์‚ฌ์šฉํ•˜์—ฌ ํšจ์œจ์ ์ธ ๊ฒ€์ƒ‰ ๋ฐฉ์‹์„ ์ œ๊ณตํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ ์›์†Œ๊ฐ€ ์ €์žฅ๋  ์ž๋ฆฌ๊ฐ€ ์›์†Œ์˜ ๊ฐ’์— ์˜ํ•ด ๊ฒฐ์ •๋จ ๋งค์šฐ ๋น ๋ฅธ ์‘๋‹ต์„ ์š”ํ•˜๋Š” ๊ฒฝ์šฐ์— ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ๋จ ex) ์ฃผ๋ฏผ ๋“ฑ๋ก ์‹œ์Šคํ…œ๊ณผ ๊ฐ™์€ ํ˜ธ์ถœ ๋ฒˆํ˜ธ ๊ด€๋ จ ๊ฒ€์ƒ‰ ํ•ด์‹œ ํ•จ์ˆ˜ ํ•ด์‹œ ํ•จ์ˆ˜๋ฅผ ์ ์šฉํ•˜์—ฌ ์ž…๋ ฅ ํ‚ค๊ฐ’์œผ๋กœ๋ถ€ํ„ฐ ํ•ด์‹œ ๊ฐ’์„ ์–ป์—ˆ์„ ๋•Œ ์ž…๋ ฅ ์›์†Œ๊ฐ€ ํ•ด์‹œ ํ…Œ์ด๋ธ”์— ๊ณจ๊ณ ๋ฃจ ์ €์žฅ๋˜์–ด์•ผ ํ•œ๋‹ค. ๊ณ„์‚ฐ์ด ๊ฐ„๋‹จํ•ด์•ผ ํ•˜๋ฉฐ ๋Œ€ํ‘œ์ ์œผ๋กœ ๋‚˜๋ˆ„๊ธฐ ๋ฐฉ๋ฒ•๊ณผ ๊ณฑํ•˜๊ธฐ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค. ๋‚˜๋ˆ„๊ธฐ ๋ฐฉ๋ฒ•(Division Method) h(x) = x mod m m: ํ•ด์‹œ ํ…Œ์ด๋ธ” ์‚ฌ์ด์ฆˆ, ๋ณดํ†ต ์†Œ์ˆ˜๋กœ ์ง€์ • ๊ณฑํ•˜๊ธฐ ๋ฐฉ๋ฒ•(Multiplication Method) h(x) = (xA mod 1) * m A: 0

์œ ๋‹ˆ์˜จ ํŒŒ์ธ๋“œ(Union-Find)

์„œ๋กœ์†Œ ์ง‘ํ•ฉ(Disjoint Set)์ด๋ž€? ๊ณตํ†ต ์›์†Œ๊ฐ€ ์—†๋Š” ๋‘ ์ง‘ํ•ฉ, ์ฆ‰ A∩B=∅์„ ๋งŒ์กฑ์‹œํ‚ค๋Š” ๋‘ ์ง‘ํ•ฉ A, B๋ฅผ ์„œ๋กœ์†Œ ์ง‘ํ•ฉ์ด๋ผ๊ณ  ํ•œ๋‹ค. ์œ ๋‹ˆ์˜จ ํŒŒ์ธ๋“œ(Union-Find)๋ž€? ์„œ๋กœ์†Œ ์ง‘ํ•ฉ์— ๋Œ€ํ•œ ์—ฐ์‚ฐ์„ ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. ์‰ฌ์šด ์ดํ•ด๋ฅผ ์œ„ํ•ด ๋‹ค์Œ์˜ ์˜ˆ์‹œ๋ฅผ ๋ณด์ž. https://www.acmicpc.net/problem/1717 1717๋ฒˆ: ์ง‘ํ•ฉ์˜ ํ‘œํ˜„ ์ดˆ๊ธฐ์— $n+1$๊ฐœ์˜ ์ง‘ํ•ฉ $\{0\}, \{1\}, \{2\}, \dots , \{n\}$์ด ์žˆ๋‹ค. ์—ฌ๊ธฐ์— ํ•ฉ์ง‘ํ•ฉ ์—ฐ์‚ฐ๊ณผ, ๋‘ ์›์†Œ๊ฐ€ ๊ฐ™์€ ์ง‘ํ•ฉ์— ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€๋ฅผ ํ™•์ธํ•˜๋Š” ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ์ง‘ํ•ฉ์„ ํ‘œํ˜„ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘ www.acmicpc.net ์œ„์˜ ๋ฌธ์ œ์ฒ˜๋Ÿผ ์ดˆ๊ธฐ์— n+1๊ฐœ์˜ ์ง‘ํ•ฉ {0}, {1}, {2}, ... , {n}์ด..

ํž™(Heap)๊ณผ ์šฐ์„ ์ˆœ์œ„ ํ(Priority Queue)

ํž™์ด๋ž€? ์ตœ๋Œ“๊ฐ’ ๋ฐ ์ตœ์†Ÿ๊ฐ’์„ ์ฐพ์•„๋‚ด๋Š” ์—ฐ์‚ฐ์„ ๋น ๋ฅด๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ทœ์น™์„ ๊ฐ–๋Š” ์™„์ „์ด์ง„ํŠธ๋ฆฌ๋ฅผ ๊ธฐ๋ณธ์œผ๋กœ ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ A๊ฐ€ B์˜ ๋ถ€๋ชจ๋…ธ๋“œ(parent node) ์ด๋ฉด, A์˜ ํ‚ค(key)๊ฐ’๊ณผ B์˜ ํ‚ค๊ฐ’ ์‚ฌ์ด์—๋Š” ๋Œ€์†Œ๊ด€๊ณ„๊ฐ€ ์„ฑ๋ฆฝํ•œ๋‹ค. ํž™์—๋Š” ๋‘๊ฐ€์ง€ ์ข…๋ฅ˜๊ฐ€ ์žˆ๋‹ค. ์ตœ๋Œ€ ํž™: ๋ถ€๋ชจ๋…ธ๋“œ์˜ ํ‚ค ๊ฐ’์ด ์ž์‹๋…ธ๋“œ์˜ ํ‚ค ๊ฐ’๋ณด๋‹ค ํ•ญ์ƒ ํฐ ํž™ ์ตœ์†Œ ํž™: ๋ถ€๋ชจ๋…ธ๋“œ์˜ ํ‚ค ๊ฐ’์ด ์ž์‹๋…ธ๋“œ์˜ ํ‚ค ๊ฐ’๋ณด๋‹ค ํ•ญ์ƒ ์ž‘์€ ํž™ ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ๋Š” ์ž์‹๋…ธ๋“œ์˜ ๊ฐœ์ˆ˜๊ฐ€ ์ตœ๋Œ€ 2๊ฐœ์ธ ์ด์ง„ ํž™(binary heap)์„ ์‚ฌ์šฉ ๊ฐ€์žฅ ๋†’์€(ํ˜น์€ ๊ฐ€์žฅ ๋‚ฎ์€) ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ€์ง€๋Š” ๋…ธ๋“œ๊ฐ€ ํ•ญ์ƒ ๋ฃจํŠธ ๋…ธ๋“œ์— ์˜ค๊ฒŒ ๋˜๋Š” ํŠน์ง•์ด ์žˆ์Œ ์ด๋ฅผ ์‘์šฉํ•˜์—ฌ ์šฐ์„ ์ˆœ์œ„ ํ์™€ ๊ฐ™์€ ์ถ”์ƒ์  ์ž๋ฃŒํ˜•์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. ํž™์˜ ์ฃผ์š” ์—ฐ์‚ฐ ์ตœ์†Œ ํž™์„ ๊ธฐ์ค€์œผ๋กœ ํž™์˜ ์ฃผ์š” ์—ฐ์‚ฐ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ..

์ถ”์ƒ ํŒฉํ† ๋ฆฌ(Abstract Factory) ํŒจํ„ด

์ถ”์ƒ ํŒฉํ† ๋ฆฌ ํŒจํ„ด์ด๋ž€? ๊ด€๋ จ์„ฑ ์žˆ๋Š” ์—ฌ๋Ÿฌ ์ข…๋ฅ˜์˜ ๊ฐ์ฒด๋ฅผ ์ผ๊ด€๋œ ๋ฐฉ์‹์œผ๋กœ ์ƒ์„ฑํ•˜๋Š” ๊ฒฝ์šฐ์— ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์บก์Šํ™”ํ•˜์—ฌ ๊ตฌ์ฒด์ ์ธ ํด๋ž˜์Šค์— ์˜์กดํ•˜์ง€ ์•Š๊ณ  ์„œ๋กœ ์—ฐ๊ด€๋˜๊ฑฐ๋‚˜ ์˜์กด์ ์ธ ๊ฐ์ฒด๋“ค์˜ ์กฐํ•ฉ์„ ๋งŒ๋“œ๋Š” ํŒจํ„ด์ด๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์—˜๋ ˆ๋ฒ ์ดํ„ฐ ๋ถ€ํ’ˆ ์—…์ฒด์— ๋Œ€ํ•œ ์„ค๊ณ„๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•˜์ž. Motor ํด๋ž˜์Šค์˜ move ๋ฉ”์„œ๋“œ์˜ ๊ตฌ์กฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. public void move(Direction direction) { // 1. ์ด๋ฏธ ์ด๋™ ์ค‘์ด๋ฉด ๋ฌด์‹œํ•œ๋‹ค. // 2. ๋งŒ์•ฝ ๋ฌธ์ด ์—ด๋ ค ์žˆ์œผ๋ฉด ๋ฌธ์„ ๋‹ซ๋Š”๋‹ค. // 3. ๋ชจํ„ฐ๋ฅผ ๊ตฌ๋™ํ•ด์„œ ์ด๋™์‹œํ‚จ๋‹ค. // 4. ๋ชจํ„ฐ์˜ ์ƒํƒœ๋ฅผ ์ด๋™ ์ค‘์œผ๋กœ ์„ค์ •ํ•œ๋‹ค. } 3๋ฒˆ ๋ถ€๋ถ„์„ ์ œ์™ธํ•˜๋ฉด Hyundai ๋ชจํ„ฐ, LG ๋ชจํ„ฐ ๋‘˜ ๋‹ค ์ฝ”๋“œ๊ฐ€ ๋™์ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ…œํ”Œ๋ฆฟ ๋ฉ”์„œ๋“œ ํŒจํ„ด์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. Do..