[์ž๋ฃŒ๊ตฌ์กฐ] ๊ทธ๋ž˜ํ”„(Graph) + ๊ตฌํ˜„ํ•˜๊ธฐ(Java์˜ ์ธ์ ‘ํ–‰๋ ฌ๊ณผ ์ธ์ ‘๋ฆฌ์ŠคํŠธ)
ยท
Algorithm/KBro Study
๊ทธ๋ž˜ํ”„(Graph)๋ž€? ๊ทธ๋ž˜ํ”„๋ž€ ์š”์†Œ๋“ค์ด ์„œ๋กœ ๋ณต์žกํ•˜๊ฒŒ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ๊ด€๊ณ„๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค. ๊ทธ๋ž˜ํ”„๋Š” ์ •์ (vertex)๊ณผ ์ •์ ๊ณผ ์ •์ ์„ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฐ„์„ (edge)๋“ค์˜ ์ง‘ํ•ฉ์œผ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค. -> ์ •์ (vertex)๋Š” ๋…ธ๋“œ(node)๋ผ๊ณ ๋„ ํ•จ ์•„๋ž˜๋Š” ๋Œ€ํ‘œ์ ์ธ ๊ทธ๋ž˜ํ”„ ์ข…๋ฅ˜๋“ค์˜ ์˜ˆ์‹œ์ด๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์ด๋Ÿฌํ•œ ๊ทธ๋ž˜ํ”„๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž. ๊ทธ๋ž˜ํ”„ ๊ตฌํ˜„ํ•˜๊ธฐ ์ปดํ“จํ„ฐ์—์„œ ๊ทธ๋ž˜ํ”„๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์—๋Š” ๋ฐฐ์—ด(Array)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ(Linked List)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค. ๊ทธ๋ž˜ํ”„ ๊ตฌํ˜„ - ์ธ์ ‘ ํ–‰๋ ฌ(Adjacency Materix) ์ •์  a์™€ ์ •์  b๋ฅผ ์ž‡๋Š” ๊ฐ„์„ ์ด ์žˆ์„ ๊ฒฝ์šฐ, ํ–‰๋ ฌ(a,b)์— 1์„ ํ‘œ๊ธฐํ•ด์ค€๋‹ค. ๋งŒ์•ฝ ๊ฐ€์ค‘์น˜๊ฐ€ ์žˆ๋Š” ๊ทธ๋ž˜ํ”„๋ผ๋ฉด 1 ๋Œ€์‹  ๊ฐ€์ค‘์น˜๋ฅผ ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฌด..
[์•Œ๊ณ ๋ฆฌ์ฆ˜] Brute Force(๋ธŒ๋ฃจํŠธ ํฌ์Šค)
ยท
Algorithm/KBro Study
Brute Force(๋ธŒ๋ฃจํŠธ ํฌ์Šค) ๋ธŒ๋ฃจํŠธ ํฌ์Šค๋Š” Brute : ๋‚œํญํ•œ / Force : ํž˜ => ๋‚œํญํ•œ ํž˜์œผ๋กœ ํ•ด์„์ด ๋œ๋‹ค. ์ด๋ฅผ ์„ค๋ช…ํ•˜๋ฉด, ๋ฌด์‹ํ•˜๊ฒŒ ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ํƒ์ƒ‰(์™„์ „ํƒ์ƒ‰)ํ•˜๋ฉด์„œ ์กฐ๊ฑด์— ์ถฉ์กฑ๋˜๋Š” ๊ฒฐ๊ณผ๋งŒ์„ ๊ฐ€์ ธ์˜จ๋‹ค. ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๊ฐ€์žฅ ํฐ ํŠน์ง•์€ ๋ชจ๋“  ์˜์—ญ์„ ์ „์ฒด ํƒ์ƒ‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ์ „์ฒด ํƒ์ƒ‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” ์„ ํ˜• ๊ตฌ์กฐ๋ฅผ ์ „์ฒด์ ์œผ๋กœ ํƒ์ƒ‰ํ•˜๋Š” ์ˆœ์ฐจ ํƒ์ƒ‰, ๋น„์„ ํ˜• ๊ตฌ์กฐ๋ฅผ ์ „์ฒด์ ์œผ๋กœ ํƒ์ƒ‰ํ•˜๋Š” ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰(DFS), ๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰(BFS), ๋ฐฑํŠธ๋ž˜ํ‚น(Backtracking) ๊ฐ€ ๊ธฐ๋ณธ์ ์ธ ๋„๊ตฌ์ด๋‹ค. ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ๋“  ์ „์ฒด ํƒ์ƒ‰์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ๋‹ค๋ฉด ๋ธŒ๋ฃจํŠธ ํฌ์Šค ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ํ’€์—ˆ๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ธŒ๋ฃจํŠธ ํฌ์Šค๋Š” ์™„๋ฒฝํžˆ ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ํƒ์ƒ‰ํ•˜๊ธฐ์—, ์ •ํ™•๋„๋Š” ์šฐ์ˆ˜ํ•˜์ง€๋งŒ, ์ž์›์„ ๋„ˆ๋ฌด ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค๋Š” ์ ์—..
๋„์ปค ํƒ€์ž„์กด(timezone) ๋ณ€๊ฒฝ
ยท
Languages | Frameworks/Docker
๋„์ปค ์ปจํ…Œ์ด๋„ˆ ๋‚ด์˜ timezone(default: UTC)๋ฅผ ๋ณ€๊ฒฝํ•ด์ฃผ๊ธฐ ์œ„ํ•ด์„œ๋Š” docker runํ• ๋•Œ -e TZ=Asia/Seoul ์˜ต์…˜์œผ๋กœ ๋ณ€๊ฒฝํ•ด ์ค„ ์ˆ˜๋„ ์žˆ์ง€๋งŒ, tzdata๋ฅผ ์ด์šฉํ•ด ์‰ฝ๊ฒŒ ๋ณ€๊ฒฝ ํ•  ์ˆ˜ ์žˆ๋‹ค. export TZ=Asia/Seoul ์ปจํ…Œ์ด๋„ˆ ๋‚ด์—์„œ ์œ„์˜ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜๊ณ , date๋ช…๋ น์–ด๋กœ ์‹œ๊ฐ„์„ ํ™•์ธํ•ด๋ณด๋ฉด ์—์„œ ๋กœ ๋ณ€๊ฒฝ๋œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์œ„์™€ ๊ฐ™์ด ํ–ˆ๋Š”๋ฐ๋„, ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋‚˜๊ฐ”๋‹ค๊ฐ€ ๋“ค์–ด์™”์„๋•Œ ์ ์šฉ์ด ์•ˆ๋˜์–ด์žˆ๋‹ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ํ•ด๋ณด๋Š” ๊ฒƒ์„ ์ถ”์ฒœํ•œ๋‹ค. -์ปจํ…Œ์ด๋„ˆ ์ ‘์† ํ›„ # dpkg-reconfigure tzdata - ํ•œ๊ตญ ์„œ์šธ ๊ธฐ์ค€ 6(Asia) -> 69(Seoul) ์„ ํƒ # date๋กœ ๋ณ€๊ฒฝ๋œ ์‹œ๊ฐ„ ํ™•์ธ ํ›„ docker ์žฌ์‹œ์ž‘ ์ถ”๊ฐ€> DB TimeZone ๋ณ€๊ฒฝํ•˜๊ธฐ http:..
[์ž๋ฃŒ๊ตฌ์กฐ] B-tree, B+tree ์ด๋ก  ์ •๋ฆฌ
ยท
Algorithm/KBro Study
B-tree "๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ํŒŒ์ผ ์‹œ์Šคํ…œ์—์„œ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ํŠธ๋ฆฌ ์ž๋ฃŒ๊ตฌ์กฐ์˜ ์ผ์ข…์œผ๋กœ, ์ด์ง„ ํŠธ๋ฆฌ๋ฅผ ํ™•์žฅํ•ด ํ•˜๋‚˜์˜ ๋…ธ๋“œ๊ฐ€ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ์ž์‹ ๋…ธ๋“œ์˜ ์ตœ๋Œ€ ์ˆซ์ž๊ฐ€ 2๋ณด๋‹ค ํฐ ํŠธ๋ฆฌ ๊ตฌ์กฐ์ด๋‹ค." ์ •๋ฆฌํ•˜์ž๋ฉด, B-tree๋Š” Binary search tree์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ, ํ•œ ๋…ธ๋“œ ๋‹น ์ž์‹ ๋…ธ๋“œ๊ฐ€ 2๊ฐœ ์ด์ƒ ๊ฐ€๋Šฅํ•˜๋‹ค ๋ผ๊ณ  ํ• ์ˆ˜์žˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๋จผ์ € ํŠธ๋ฆฌ๊ตฌ์กฐ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž. ํŠธ๋ฆฌ ๊ตฌ์กฐ๋Š” ๊ผญ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ํ•œ์ •ํ•˜์ง€ ์•Š๋”๋ผ๋„ ์‹œ์Šคํ…œ ์„ธ๊ณ„์—์„œ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๊ตฌ์กฐ์ด๋‹ค. 'ํƒ์ƒ‰' ์‹œ, ๋‹จ์‹œ๊ฐ„ ๋‚ด์— ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. B-tree์˜ ํ•ต์‹ฌ์€ ๋ฐ์ดํ„ฐ๊ฐ€ ์ •๋ ฌ๋œ ์ƒํƒœ๋กœ ์œ ์ง€๋˜์–ด ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋ฆผ์— ํ‘œ์‹œ๋œ ์‚ฌ๊ฐํ˜•์œผ๋กœ ํ‘œ์‹œ๋œ ํ•œ ๊ฐœ ํ•œ ๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ '๋…ธ๋“œ(Node)'๋ผ๊ณ  ํ•œ๋‹ค. ๊ฐ€์žฅ ์ƒ๋‹จ์˜ ๋…ธ๋“œ๋ฅผ '๋ฃจ..
[Java] ์นด์šดํŒ… ์ •๋ ฌ (Counting Sort)
ยท
Algorithm/BaekJoon
https://www.acmicpc.net/problem/10989 10989๋ฒˆ: ์ˆ˜ ์ •๋ ฌํ•˜๊ธฐ 3 ์ฒซ์งธ ์ค„์— ์ˆ˜์˜ ๊ฐœ์ˆ˜ N(1 ≤ N ≤ 10,000,000)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์—๋Š” ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์ด ์ˆ˜๋Š” 10,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๋‹ค. www.acmicpc.net ๋ฐฑ์ค€ 10989๋ฒˆ ์ˆ˜ ์ •๋ ฌํ•˜๊ธฐ3 ๋ฌธ์ œ๋ฅผ Collections.sort()๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ–ˆ๋”๋‹ˆ ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฉ”๋ชจ๋ฆฌ ์ดˆ๊ณผ ์˜ค๋ฅ˜๊ฐ€ ๋–ด๋‹ค. ๊ตฌ๊ธ€๋ง์„ ํ†ตํ•ด ์•Œ์•„๋ณด์•˜๋”๋‹ˆ, Collections.sort()๋‚˜ Arrays.sort()๊ฐ™์€ ๋ฉ”์†Œ๋“œ๋Š” ํ‰๊ท  ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ ๐šถ(nlogn) ์ธ ๋ฐ˜๋ฉด์— Counting sort๋Š” ํ‰๊ท  ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ ๐šถ(๐‘›) ์ธ ์„ฑ๋Šฅ์„ ๋ณด์—ฌ์ฃผ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ธ ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค. Arrays.sort()๋Š” ํ‰๊ท : ..