์ „์ฒด ๊ธ€

์•Œ๊ณ ๋ฆฌ์ฆ˜/BOJ

[BOJ] 11657 ํƒ€์ž„๋จธ์‹ 

โœจ ์ตœ๋‹จ๊ฒฝ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜ โžก๏ธ ๋ฒจ๋งŒ ํฌ๋“œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ https://www.acmicpc.net/problem/11657 11657๋ฒˆ: ํƒ€์ž„๋จธ์‹  ์ฒซ์งธ ์ค„์— ๋„์‹œ์˜ ๊ฐœ์ˆ˜ N (1 โ‰ค N โ‰ค 500), ๋ฒ„์Šค ๋…ธ์„ ์˜ ๊ฐœ์ˆ˜ M (1 โ‰ค M โ‰ค 6,000)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ M๊ฐœ์˜ ์ค„์—๋Š” ๋ฒ„์Šค ๋…ธ์„ ์˜ ์ •๋ณด A, B, C (1 โ‰ค A, B โ‰ค N, -10,000 โ‰ค C โ‰ค 10,000)๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. www.acmicpc.net ๐Ÿ“ ๊ณ ๋ คํ•ด์•ผํ•  ์  C < 0 ์ธ ๊ฒฝ์šฐ ํƒ€์ž„๋จธ์‹ ์œผ๋กœ ์‹œ๊ฐ„์„ ๋˜๋Œ์•„๊ฐ€๋Š” ๊ฒฝ์šฐ์ด๋‹ค. โž” ์Œ์˜ ๊ฐ€์ค‘์น˜ ์กด์žฌ 1๋ฒˆ ๋„์‹œ์—์„œ ์ถœ๋ฐœํ•œ๋‹ค. ์Œ์˜ ์‚ฌ์ดํด์ด ์žˆ๊ฑฐ๋‚˜ ๊ฒฝ๋กœ๊ฐ€ ์•„์˜ˆ ์—†๋‹ค๋ฉด -1 ์ถœ๋ ฅ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ ๋ฒ”์œ„ ์กฐ์‹ฌ ๐Ÿ•น๏ธ ํ’€์ด๊ณผ์ • 1๏ธโƒฃ ๊ฐ„์„ ๊ณผ ์ •์ , ๋น„์šฉ์˜ ์ •๋ณด๋ฅผ ์ €์žฅํ•œ๋‹ค. 2๏ธโƒฃ ๋ฒจ๋งŒ ํฌ๋“œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉ..

์•Œ๊ณ ๋ฆฌ์ฆ˜/BOJ

[BOJ] 1865 ์›œํ™€

โœจ ์ตœ๋‹จ๊ฒฝ๋กœ ์•Œ๊ณ ๋ฆฌ์ฆ˜ โžก๏ธ ๋ฒจ๋งŒ ํฌ๋“œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ https://www.acmicpc.net/problem/1865 1865๋ฒˆ: ์›œํ™€ ์ฒซ ๋ฒˆ์งธ ์ค„์—๋Š” ํ…Œ์ŠคํŠธ์ผ€์ด์Šค์˜ ๊ฐœ์ˆ˜ TC(1 โ‰ค TC โ‰ค 5)๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‘ ๋ฒˆ์งธ ์ค„๋ถ€ํ„ฐ TC๊ฐœ์˜ ํ…Œ์ŠคํŠธ์ผ€์ด์Šค๊ฐ€ ์ฐจ๋ก€๋กœ ์ฃผ์–ด์ง€๋Š”๋ฐ ๊ฐ ํ…Œ์ŠคํŠธ์ผ€์ด์Šค์˜ ์ฒซ ๋ฒˆ์งธ ์ค„์—๋Š” ์ง€์ ์˜ ์ˆ˜ N(1 โ‰ค N โ‰ค 500), www.acmicpc.net ๐Ÿ“ ๊ณ ๋ คํ•ด์•ผํ•  ์  ํ•œ ์ง€์ ์—์„œ ์ถœ๋ฐœํ•˜์—ฌ ๋‹ค์‹œ ์ถœ๋ฐœํ–ˆ๋˜ ์ง€์ ์œผ๋กœ ๋Œ์•„์™”์„ ๋•Œ ์ฒ˜์Œ ์ถœ๋ฐœํ–ˆ์„ ๋•Œ๋ณด๋‹ค ์‹œ๊ฐ„์ด ๋˜๋Œ์•„๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ํŒ๋‹จ โž” ์›œํ™€ ๋‚ด์—์„œ ์‹œ๊ฐ„์ด ๊ฑฐ๊พธ๋กœ ํ˜๋Ÿฌ๊ฐ„๋‹ค. โžก๏ธ ์Œ์ˆ˜ ๊ฐ€์ค‘์น˜ ์กด์žฌ & ์Œ์˜ ์‚ฌ์ดํด ์กด์žฌ O ํ•œ ์ง€์ ์—์„œ ์ถœ๋ฐœํ•œ๋‹ค. (ํŠน์ • ์ง€์ ์—์„œ ์ถœ๋ฐœ X) ์ž„์˜์˜ ์ •์ ์—์„œ ์ถœ๋ฐœ ๋ชจ๋“  ์ •์ ์—์„œ ์ถœ๋ฐœ ๋‘ ์ง€์ ์„ ์—ฐ๊ฒฐํ•˜๋Š” ๋„๋กœ๊ฐ€ ํ•œ ..

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

Bellman-Ford (๋ฒจ๋งŒ-ํฌ๋“œ)

V๊ฐœ์˜ ์ •์ ๊ณผ E๊ฐœ์˜ ๊ฐ„์„ ์„ ๊ฐ€์ง„ ๊ฐ€์ค‘ ๊ทธ๋ž˜ํ”„ G์—์„œ ํŠน์ • ์ถœ๋ฐœ ์ •์ (S)์—์„œ๋ถ€ํ„ฐ ๋‹ค๋ฅธ ๋ชจ๋“  ์ •์ ๊นŒ์ง€์˜ ์ตœ๋‹จ๊ฒฝ๋กœ๋ฅผ ๊ตฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. ๐Ÿ‘€ ํŠน์ง• ์Œ์˜ ๊ฐ€์ค‘์น˜๋ฅผ ๊ฐ–๋Š” ๊ฐ„์„ ๋„ ์กด์žฌ ๊ฐ€๋Šฅํ•˜๋‹ค. ์Œ์˜ ์‚ฌ์ดํด์˜ ์กด์žฌ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ์ตœ๋‹จ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” V-1๋ฒˆ E๊ฐœ์˜ ๋ชจ๋“  ๊ฐ„์„ ์„ ํ™•์ธํ•œ๋‹ค. ์Œ์˜ ์‚ฌ์ดํด ์กด์žฌ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ํ•œ ๋ฒˆ ๋” E๊ฐœ์˜ ๊ฐ„์„ ์„ ํ™•์ธํ•œ๋‹ค. ์ด ์—ฐ์‚ฐ ํšŸ์ˆ˜ = VxE โŒ›๏ธ ์‹œ๊ฐ„ ๋ณต์žก๋„ = O(VE) V๋ฒˆ์งธ ๋ชจ๋“  ๊ฐ„์„ ์„ ํ™•์ธํ–ˆ์„ ๋•Œ ๊ฑฐ๋ฆฌ๋ฐฐ์—ด์ด ๊ฐฑ์‹ ๋˜์—ˆ๋‹ค๋ฉด ๊ทธ๋ž˜ํ”„ G๋Š” ์Œ์˜ ์‚ฌ์ดํด์„ ๊ฐ€์ง€๋Š” ๊ทธ๋ž˜ํ”„์ด๋‹ค. ์œ„์™€ ๊ฐ™์ด ์Œ์˜ ๊ฐ€์ค‘์น˜๋ฅผ ๊ฐ–๊ณ  ์žˆ๋Š” ๊ทธ๋ž˜ํ”„๊ฐ€ ์žˆ์„ ๋•Œ, ๋‹ค์ต์ŠคํŠธ๋ผ๋กœ ์ •์  1์—์„œ ๋ชจ๋“  ์ •์ ๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ˜„ํ•œ๋‹ค๋ฉด 1 โž” 2 = 1 1 โž” 2 โž” 3 = 2 1 โž” 2 โž” 3 โž” ..

์•Œ๊ณ ๋ฆฌ์ฆ˜/BOJ

[BOJ] 1939 ์ค‘๋Ÿ‰์ œํ•œ

โœจ Binary Search + BFS/DFS https://www.acmicpc.net/problem/1939 1939๋ฒˆ: ์ค‘๋Ÿ‰์ œํ•œ ์ฒซ์งธ ์ค„์— N, M(1 โ‰ค M โ‰ค 100,000)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‹ค์Œ M๊ฐœ์˜ ์ค„์—๋Š” ๋‹ค๋ฆฌ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์„ธ ์ •์ˆ˜ A, B(1 โ‰ค A, B โ‰ค N), C(1 โ‰ค C โ‰ค 1,000,000,000)๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์ด๋Š” A๋ฒˆ ์„ฌ๊ณผ B๋ฒˆ ์„ฌ ์‚ฌ์ด์— ์ค‘๋Ÿ‰์ œํ•œ์ด www.acmicpc.net ๐Ÿ“ ๊ณ ๋ คํ•ด์•ผํ•  ์  ๋‘ ์„ฌ ์‚ฌ์ด์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋‹ค๋ฆฌ๊ฐ€ ์žˆ๊ณ  ์–‘๋ฐฉํ–ฅ์ด๋‹ค. ๊ณต์žฅ์ด ์žˆ๋Š” ๋‘ ์„ฌ์„ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒฝ๋กœ๊ฐ€ ๋ฐ˜๋“œ์‹œ ์กด์žฌํ•œ๋‹ค. (๋ฐ˜๋“œ์‹œ ์กด์žฌํ•˜๋Š” ๊ฒฝ๋กœ์˜ ์ž…๋ ฅ๊ฐ’๋งŒ ์ฃผ์–ด์ง) ์˜ฎ๊ธธ ์ˆ˜ ์žˆ๋Š” ๋ฌผํ’ˆ์˜ ์ตœ๋Œ€ ์ค‘๋Ÿ‰ ๊ตฌํ•˜๊ธฐ ๐Ÿ•น๏ธ ํ’€์ด๊ณผ์ • 1๏ธโƒฃ ์ž…๋ ฅ๊ฐ’์œผ๋กœ ์ฃผ์–ด์ง„ ๋‹ค๋ฆฌ ์ •๋ณด ์ €์žฅ (a์„ฌ๊ณผ b์„ฌ ์‚ฌ์ด์— ์ค‘๋Ÿ‰์ œํ•œ์ด ..

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

LCA (์ตœ์†Œ๊ณตํ†ต์กฐ์ƒ)

LCA๋Š” Lowest Common Ancestor์˜ ์•ฝ์ž๋กœ ์ตœ์†Œ ๊ณตํ†ต ์กฐ์ƒ์„ ์ฐพ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. ํŠธ๋ฆฌ๊ตฌ์กฐ์—์„œ ์‚ฌ์šฉ๋˜๋ฉฐ ๋‘ ์ •์  u, v์—์„œ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๊ณตํ†ต ์กฐ์ƒ์„ ์ฐพ์œผ๋ฉด ๋œ๋‹ค. ์ด ๊ทธ๋ž˜ํ”„์—์„œ 13๋ฒˆ ์ •์ ๊ณผ 15๋ฒˆ ์ •์ ์˜ ์ตœ์†Œ๊ณตํ†ต์กฐ์ƒ์€ 5๋ฒˆ ์ •์ ์ด๋‹ค. 11๋ฒˆ ์ •์ ๊ณผ 13๋ฒˆ ์ •์ ์˜ ์ตœ์†Œ๊ณตํ†ต์กฐ์ƒ์€ 1๋ฒˆ ์ •์ ์ด๋‹ค. ์ด๋Ÿฐ ์ƒํ™ฉ์—์„œ 12๋ฒˆ ์ •์ ๊ณผ 14๋ฒˆ ์ •์ ์˜ ์ตœ์†Œ๊ณตํ†ต์กฐ์ƒ์€ 12๋ฒˆ ์ •์ ์ด๋‹ค. ๐Ÿ•น๏ธ LCA ๊ณผ์ • 1๏ธโƒฃ ์ž…๋ ฅ๋ฐ›์€ ์ •์ ๊ณผ ๊ฐ„์„ ์œผ๋กœ ์–‘๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„ (ํŠธ๋ฆฌ๊ตฌ์กฐ) ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. 2๏ธโƒฃ BFS๋‚˜ DFS๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ depth๋ฅผ, DP๋ฅผ ํ™œ์šฉํ•˜์—ฌ parent ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๋Š” ํŠธ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. 3๏ธโƒฃ LCA(u, v) ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ u์™€ v์˜ ์ตœ์†Œ๊ณตํ†ต์กฐ์ƒ์„ ์ฐพ๋Š”๋‹ค. u์™€ v ์ค‘์—์„œ ๊นŠ์ด๊ฐ€ ๋” ๊นŠ์€ ์ •์ ์„ ์–•์€ ๊นŠ..

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

Binary Search (์ด๋ถ„ํƒ์ƒ‰)

Binary Search๋Š” ์ •๋ ฌ๋˜์–ด ์žˆ๋Š” ๋ฆฌ์ŠคํŠธ์—์„œ ํƒ์ƒ‰ ๋ฒ”์œ„๋ฅผ ์ขํ˜€๊ฐ€๋ฉฐ ์›ํ•˜๋Š” ๊ฐ’์„ ์–ป๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. ๋ฆฌ์ŠคํŠธ๊ฐ€ ๋ฐ˜๋“œ์‹œ ์ •๋ ฌ๋˜์–ด ์žˆ์–ด์•ผ ํ•˜๋ฉฐ, 3๊ฐœ์˜ ๋ณ€์ˆ˜ (low, mid, high)๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ฐ’์„ ํƒ์ƒ‰ํ•œ๋‹ค. ์ค‘์•™๊ฐ’(mid)์„ ๊ธฐ์ค€์œผ๋กœ ๋น„๊ตํ•˜์—ฌ low์™€ high ๊ฐ’์„ ์ •ํ•˜๊ณ , ์ด ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•ด์„œ ๊ฐ’์„ ์–ป์–ด๋‚ด๋ฉด ๋œ๋‹ค. ํƒ์ƒ‰ ๋ฒ”์œ„๊ฐ€ ๋ฐ˜์œผ๋กœ ์ค„์–ด๋“ค๋ฉด์„œ start์™€ end ๊ฐ’์„ ์ •ํ•˜๋Š” ๊ณผ์ •์„ ๊ฑฐ์น˜๊ธฐ ๋•Œ๋ฌธ์— ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ ๋‚ฎ๊ณ , ์ˆœ์ฐจ์  ํƒ์ƒ‰๋ณด๋‹ค ๋น ๋ฅธ ํƒ์ƒ‰์ด ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ ๋ฐฐ์—ด์˜ ์›์†Œ ๊ฐœ์ˆ˜๊ฐ€ ๋งŽ์„ ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค. ๐Ÿ•น๏ธ Binary Search ๊ณผ์ • 1๏ธโƒฃ ๋ฐฐ์—ด์˜ ์ค‘๊ฐ„ ๊ฐ’์„ ๊ณ„์‚ฐํ•˜์—ฌ ์ฐพ๊ณ ์ž ํ•˜๋Š” ๊ฐ’๊ณผ ๋น„๊ตํ•œ๋‹ค. ์ค‘๊ฐ„ ๊ฐ’์€ (low+high)/2 ๋กœ ๊ณ„์‚ฐํ•œ๋‹ค. 2๏ธโƒฃ ์ค‘๊ฐ„ ๊ฐ’์ด ์ฐพ๊ณ ์ž ํ•˜๋Š” ๊ฐ’๋ณด๋‹ค ์ž‘๋‹ค๋ฉด ์ค‘๊ฐ„๊ฐ’๋ณด๋‹ค..

Java

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

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

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

๐Ÿ“› 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; ..

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