์ „์ฒด ๊ธ€

Java

Priority Queue (์šฐ์„ ์ˆœ์œ„ ํ)

Queue๋Š” ๋จผ์ € ๋“ค์–ด๊ฐ„ ๋ฐ์ดํ„ฐ๊ฐ€ ๋จผ์ € ๋‚˜์˜ค๋Š” ํ˜•์‹์ด๋‚˜, Priority Queue๋Š” ์ด์™€ ๋‹ค๋ฅด๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ๊บผ๋‚ผ ๋•Œ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๊ฐ€์žฅ ๋†’์€ ๊ฒƒ๋ถ€ํ„ฐ ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค. ์ผ๋ฐ˜์ ์ธ ํ์ฒ˜๋Ÿผ ์ถ”๊ฐ€/์‚ญ์ œ ์—ฐ์‚ฐ์ด ์žˆ์ง€๋งŒ, ๊ทธ ์ˆœ์„œ์— ๊ด€๊ณ„์—†์ด ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ณ ๋ คํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค. Priority Queue๋Š” ํž™ ๊ตฌ์กฐ(ํŠธ๋ฆฌ๊ตฌ์กฐ)๋ฅผ ์ด์šฉํ•ด์„œ ๋งŒ๋“ค๊ณ , ํฐ ๊ฐ’์ด ์šฐ์„ ์ด ๋˜๋Š” ์ตœ๋Œ€ํž™๊ณผ ์ž‘์€ ๊ฐ’์ด ์šฐ์„ ์ด ๋˜๋Š” ์ตœ์†Œํž™์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค. (default = ์ตœ์†Œ ํž™) ๐Ÿ•น๏ธ Priority Queue ์‚ฌ์šฉ๋ฒ• ์ตœ์†Œ ํž™ (์ตœ์†Ÿ๊ฐ’๋ถ€ํ„ฐ ๋ฐฐ์—ด) PriorityQueue minHeap = new PriorityQueue(); ์ตœ๋Œ€ ํž™ (์ตœ๋Œ“๊ฐ’๋ถ€ํ„ฐ ๋ฐฐ์—ด) PriorityQueue maxHeap = new PriorityQueue(Coll..

Spring Framework/๐Ÿ“› ์—๋Ÿฌ ๊ธฐ๋ก

[๐Ÿ“› Error] Variable used in lambda expression should be final or effectively final ์—๋Ÿฌ

์ž๋ฐ”์—์„œ stream()์„ ์‚ฌ์šฉํ•ด orderProductOption์— ์žˆ๋Š” orderProduct๋ฅผ ์„ค์ •ํ•ด์ฃผ๋Š” ๊ณผ์ •์—์„œ"Variable used in lambda expression should be final or effectively final" ์—๋Ÿฌ๋ฅผ ๋‚˜ํƒ€๋‚ด๋ฉฐ orderProduct์— ๋นจ๊ฐ„ ๋ฐ‘์ค„์ด ๊ทธ์–ด์กŒ๋‹ค.๋žŒ๋‹ค ํ‘œํ˜„์‹ ๋‚ด์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ณ€์ˆ˜๊ฐ€ final ๋˜๋Š” effectively final์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ธ๋‹ค. ๋”๋ณด๊ธฐ๐Ÿ‘€ effectively final : ๋ณ€์ˆ˜๊ฐ€ ์‹ค์ œ๋กœ 'final' ๋กœ ์„ ์–ธ๋˜์–ด ์žˆ์ง€ ์•Š๋”๋ผ๋„ ๋žŒ๋‹ค ํ‘œํ˜„์‹ ๋‚ด์—์„œ ํ•ด๋‹น ๋ณ€์ˆ˜์˜ ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ์ด๋‹ค.int x = 10;Consumer consumer = (value) -> { // x = x + 5; /..

์•Œ๊ณ ๋ฆฌ์ฆ˜/๐Ÿ—‚๏ธ ์ •๋ฆฌ

Floyd-Warshall (ํ”Œ๋กœ์ด๋“œ ์›Œ์…œ)

V๊ฐœ์˜ ์ •์ ๊ณผ E๊ฐœ์˜ ๊ฐ„์„ ์„ ๊ฐ€์ง„ ๊ฐ€์ค‘ ๊ทธ๋ž˜ํ”„ G์—์„œ ๋ชจ๋“  ์ •์  ์‚ฌ์ด์˜ ์ตœ๋‹จ๊ฒฝ๋กœ๋ฅผ ๊ตฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ (๋ชจ๋“  ๋…ธ๋“œ ๊ฐ„์— ์ตœ๋‹จ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜) ์Œ์ˆ˜ ์‚ฌ์ดํด์ด ์—†๋Š” ๊ทธ๋ž˜ํ”„ ๋‚ด์˜ ๊ฐ ๋ชจ๋“  ์ •์ ์—์„œ ๊ฐ ๋ชจ๋“  ์ •์ ์— ๊นŒ์ง€์˜ ์ตœ๋‹จ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. ์Œ์ˆ˜์ธ ๊ฐ€์ค‘์น˜๋ฅผ ๊ฐ–๋Š” ๊ฐ„์„ ์ด ์กด์žฌํ•ด๋„ ๋œ๋‹ค. ์–ด๋–ค ๋‘ ์ •์  ์‚ฌ์ด์˜ ์ตœ๋‹จ ๊ฒฝ๋กœ๋Š” ์–ด๋–ค ๊ฒฝ์œ ์ง€(K)๋ฅผ ๊ฑฐ์น˜๊ฑฐ๋‚˜ ๊ฑฐ์น˜์ง€ ์•Š๋Š” ๊ฒฝ๋กœ ์ค‘ ํ•˜๋‚˜์ด๋‹ค. ex). ์ •์  A์™€ ์ •์  B ์‚ฌ์ด์˜ ์ตœ๋‹จ ๊ฒฝ๋กœ = A-B ๋˜๋Š” A-K-B ๋งŒ์•ฝ, ๊ฒฝ์œ ์ง€๋ฅผ ๊ฑฐ์นœ๋‹ค๋ฉด ์ตœ๋‹จ ๊ฒฝ๋กœ๋ฅผ ์ด๋ฃจ๋Š” ๋ถ€๋ถ„ ๊ฒฝ๋กœ ๋˜ํ•œ ์ตœ๋‹จ ๊ฒฝ๋กœ์ด๋‹ค. ex). A-K์™€ K-B ๋˜ํ•œ ์ตœ๋‹จ๊ฒฝ๋กœ ๐Ÿ‘€ ํŠน์ง• ์ˆœํ™˜๋งŒ ์—†๋‹ค๋ฉด ์Œ์ˆ˜ ๊ฐ€์ค‘์น˜๋„ ๊ฐ€๋Šฅํ•˜๋‹ค ๊ธฐ๋ณธ์ ์œผ๋กœ ๋™์ ๊ณ„ํš๋ฒ•(DP)์œผ๋กœ ์ ‘๊ทผํ•œ๋‹ค. โŒ›๏ธ ์‹œ๊ฐ„๋ณต์žก๋„ : θ(V³) (V๋Š” ๋…ธ๋“œ..

์•Œ๊ณ ๋ฆฌ์ฆ˜/๐Ÿ—‚๏ธ ์ •๋ฆฌ

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

๊ทธ๋ž˜ํ”„ (ํŠธ๋ฆฌ) ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ๋‘ ๋…ธ๋“œ๊ฐ€ ๊ฐ™์€ ๊ทธ๋ž˜ํ”„์— ์†ํ•ด์žˆ๋Š”์ง€ ํŒ๋ณ„ Union ์—ฐ์‚ฐ & Find ์—ฐ์‚ฐ union(x, y) : ๋…ธ๋“œ๋ฅผ ํ•ฉ์น˜๋Š” ์—ฐ์‚ฐ find(x) : x๊ฐ€ ์–ด๋Š ๊ทธ๋ž˜ํ”„์— ์†ํ•ด ์žˆ๋Š”์ง€ ํŒ๋ณ„ํ•˜๋Š” ์—ฐ์‚ฐ (๋…ธ๋“œ์˜ ๋ฃจํŠธ ๋…ธ๋“œ ํƒ์ƒ‰) ๐Ÿ•น๏ธ ์œ ๋‹ˆ์˜จ ํŒŒ์ธ๋“œ ๊ณผ์ • ํ˜„์žฌ 5๊ฐœ์˜ ๋…ธ๋“œ๋Š” ์„œ๋กœ ์—ฐ๊ฒฐ๋˜์–ด์žˆ์ง€ ์•Š์€ ์ƒํƒœ์ด๋ฏ€๋กœ ๋ถ€๋ชจ๋Š” ์ž๊ธฐ ์ž์‹ ์„ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋‹ค. (๋ถ€๋ชจ ๋…ธ๋“œ ์ดˆ๊ธฐํ™”) x๋Š” ๋…ธ๋“œ ๋ฒˆํ˜ธ์ด๊ณ , parent[x]๋Š” x๊ฐ€ ์–ด๋–ค ๋ถ€๋ชจ ๋…ธ๋“œ์— ์†ํ•ด ์žˆ๋Š”์ง€ ๋‚˜ํƒ€๋‚ธ๋‹ค. 1๏ธโƒฃ union(1, 2) ๋…ธ๋“œ 1๊ณผ ๋…ธ๋“œ 2๋ฅผ ํ•ฉ์นœ๋‹ค. ๋…ธ๋“œ 2์˜ ๋ถ€๋ชจ ๋…ธ๋“œ๋Š” 1์ด ๋˜์—ˆ๋‹ค. parent[2] = 1 2๏ธโƒฃ union(3, 4) / union(3, 5) ๋…ธ๋“œ 3๊ณผ ๋…ธ๋“œ 4๋ฅผ ํ•ฉ์น˜๊ณ , ๋…ธ๋“œ 3๊ณผ ๋…ธ๋“œ 5๋ฅผ ํ•ฉ์นœ๋‹ค. ๋…ธ๋“œ 4์™€ ๋…ธ..

์•Œ๊ณ ๋ฆฌ์ฆ˜/๐Ÿ—‚๏ธ ์ •๋ฆฌ

Dijkstra (๋‹ค์ต์ŠคํŠธ๋ผ)

DP(๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ)๋ฅผ ํ™œ์šฉํ•œ ๋Œ€ํ‘œ์ ์ธ ์ตœ๋‹จ ๊ฒฝ๋กœ ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. ํ•˜๋‚˜์˜ ์ •์ ์—์„œ ๋‹ค๋ฅธ ๋ชจ๋“  ์ •์ ๊นŒ์ง€์˜ ์ตœ๋‹จ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์—์„œ ์‚ฌ์šฉ๋œ๋‹ค. ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ž‘์€ ๋ฌธ์ œ๊ฐ€ ํฐ ๋ฌธ์ œ์˜ ๋ถ€๋ถ„ ์ง‘ํ•ฉ์— ์†ํ•ด์žˆ๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ํ•˜๋‚˜์˜ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ•  ๋•Œ ๊ทธ ์ด์ „๊นŒ์ง€ ๊ตฌํ–ˆ๋˜ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ ์ •๋ณด๋ฅผ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๋Š” ํŠน์ง•์ด ์žˆ๋‹ค. ๐Ÿ•น๏ธ ๋‹ค์ต์ŠคํŠธ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ณผ์ • ์ถœ๋ฐœ ๋…ธ๋“œ ์„ค์ • ์ถœ๋ฐœ ๋…ธ๋“œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๊ฐ ๋…ธ๋“œ์˜ ์ตœ์†Œ ๋น„์šฉ ์ €์žฅ ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ๋…ธ๋“œ ์ค‘์—์„œ ๊ฐ€์žฅ ๋น„์šฉ์ด ์ ์€ ๋…ธ๋“œ ์„ ํƒ ํ•ด๋‹น ๋…ธ๋“œ ๊ฑฐ์ณ์„œ ํŠน์ •ํ•œ ๋…ธ๋“œ๋กœ ๊ฐ€๋Š” ๊ฒฝ์šฐ ๊ณ ๋ คํ•˜์—ฌ ์ตœ์†Œ ๋น„์šฉ ๊ฐฑ์‹  3๏ธโƒฃ, 4๏ธโƒฃ๋ฒˆ ๋ฐ˜๋ณต ๊ธฐ๋ณธ์ ์ธ ๋‹ค์ต์ŠคํŠธ๋ผ - ์„ ํ˜•ํƒ์ƒ‰ public class Main{ static int INF = 10000..

soogoori
๐Ÿƒ๐Ÿป‍โ™€๏ธ์Šคํ…๋ฐ”์ด์Šคํ…