Algorithm

๊ฒ€์ƒ‰๊ฒฐ๊ณผ 28 ๊ฐœ
[๋ฐฑ์ค€] 2636. ์น˜์ฆˆ - Java

์ ‘๊ทผ๋ฐฉ๋ฒ•์„ ์•„์˜ˆ ๋ชป ์ฐพ๊ฒ ๋˜ ๋ฌธ์ œ...! ๊ฑฐ์˜ 1์‹œ๊ฐ„ 30๋ถ„๋™์•ˆ ๋ฉ ๋•Œ๋ฆฌ๊ณ  ์žˆ์—ˆ๋‹ค...ใ…‹ใ…‹ ์›๋ž˜ ์น˜์ฆˆ ๋ชจ์–‘์—์„œ (0, 7)์˜ c๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํŒ”๋ฐฉ ํƒ์ƒ‰์„ ํ†ตํ•ด c๊ฐ€ ๋˜๋Š” ์ขŒํ‘œ๋ฅผ ๋ชจ๋‘ ์ฐพ์•„ bfs๋ฅผ ๋Œ๋ฆด ์ƒ๊ฐ์ด์—ˆ๋Š”๋ฐ... ๋„์ €ํžˆ c๊ฐ€ ๋˜๋Š” ์ขŒํ‘œ๋ฅผ ๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ชป์ฐพ์•˜๋‹ค... ์•Œ๊ณ  ๋ณด๋‹ˆ ์น˜์ฆˆ๋ฅผ ํƒ์ƒ‰ํ•˜๋Š” ๊ฒŒ ์•„๋‹Œ ๊ณต๊ธฐ๋ฅผ ํƒ์ƒ‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ์ ‘๊ทผํ–ˆ์–ด์•ผ ํ–ˆ๋‹ค. (0,0)์„ ๊ธฐ์ค€์œผ๋กœ ๋ชจ๋“  ๊ณต๊ธฐ๋ฅผ ํƒ์ƒ‰ํ•ด ๋‚˜๊ฐ€๋ฉด์„œ ์ฃผ๋ณ€์— ์น˜์ฆˆ๊ฐ€ ์žˆ์œผ๋ฉด ๋…น์ด๋Š” ๋ฐฉ์‹... ๊ทธ๋Ÿฌ๋ฉด ์น˜์ฆˆ ๋‚ด๋ถ€์˜ ๊ตฌ๋ฉ๋„ ๋”ฐ๋กœ ์ƒ๊ฐ ์•ˆ ํ•ด๋„ ๋˜๊ณ ...!! ์„ค๋ช… ๋“ฃ์ž๋งˆ์ž ์œ ๋ ˆ์นด ๊ทธ ์ž์ฒด ๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰ ๊พธ์ค€ํžˆ ๊ณต๋ถ€ํ•ด์•ผ์ง€...ํ—ˆํ—ˆ ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. import java.io.BufferedReader; import java.io.IOException; import ja..

[์•Œ๊ณ ๋ฆฌ์ฆ˜] ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ - ํž™ ์ •๋ ฌ(Heap Sort)

ํž™(Heap) : ์™„์ „ ์ด์ง„ํŠธ๋ฆฌ์—์„œ ๋‹ค์Œ์„ ๋งŒ์กฑํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. ๋งˆ๋””์— ์ €์žฅ๋œ ๊ฐ’์€ ์ˆœ์„œ๋ฅผ ๋งค๊ธธ ์ˆ˜ ์žˆ๋Š” ์›์†Œ์ด๋‹ค. ๊ฐ ๋งˆ๋””์— ์ €์žฅ๋œ ๊ฐ’์€ ๊ทธ์˜ ์ž์‹๋งˆ๋””์— ์ €์žฅ๋œ ๊ฐ’๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๋‹ค. → ํž™ ์„ฑ์งˆ(heap property) ํž™ ์ •๋ ฌ (Heap Sort) : ์ตœ๋Œ€ ํž™ ํŠธ๋ฆฌ๋‚˜ ์ตœ์†Œ ํž™ ํŠธ๋ฆฌ๋ฅผ ๊ตฌ์„ฑํ•ด ์ •๋ ฌ์„ ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋งํ•œ๋‹ค. ํž™ ์ •๋ ฌ ๊ณผ์ • ์ดˆ๊ธฐ๋ฐฐ์—ด์˜ ์ƒํƒœ๊ฐ€ ์œ„์™€ ๊ฐ™๋‹ค๊ณ  ํ•ด๋ณด์ž. ๋ฐฐ์—ด์„ ์™„์ „ ์ด์ง„ ํŠธ๋ฆฌ๋กœ ๊ทธ๋ ค๋ณด๋ฉด ์œ„์™€ ๊ฐ™๋‹ค. ์œ„์˜ ํŠธ๋ฆฌ๋Š” ์•„์ง ํž™์€ ์•„๋‹ˆ๋ฏ€๋กœ ์ •๋ ฌ์„ ํ†ตํ•ด ์ตœ๋Œ€ ํž™์„ ๋งŒ๋“ค์–ด ๋ณผ ๊ฒƒ์ด๋‹ค. ๊ฐ€์žฅ ํ•˜์œ„์˜ ์„œ๋ธŒํŠธ๋ฆฌ๋ฅผ ๋ณด๋ฉด 3์€ ์ž์‹์ธ 10๋ณด๋‹ค ์ž‘๊ณ , 1์€ ์ž์‹์ธ 8๋ณด๋‹ค ์ž‘๋‹ค. ๋”ฐ๋ผ์„œ 3๊ณผ 10, 1๊ณผ 8์„ ๊ต์ฒดํ•˜์—ฌ ์ •๋ ฌํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๊ฐ€์žฅ ํ•˜์œ„์˜ ์„œ๋ธŒํŠธ๋ฆฌ์— ๋Œ€ํ•ด์„œ๋Š” ํž™์ด ์™„์„ฑ๋˜์—ˆ๋‹ค. ๊ทธ ๋‹ค์Œ ๋ฃจํŠธ์˜ ์™ผ..

[๋ฐฑ์ค€] 1092. ๋ฐฐ - Java

๋ถ€๋“ค๋ถ€๋“ค....์‹œ๊ฐ„์ดˆ๊ณผ๋กœ 6๋ฒˆ ์‹คํŒจํ•˜๊ณ  ๊ฒจ์šฐ ๋งž์ถ˜ ๋ฌธ์ œ... ๋ฌธ์ œ๋งŒ ์ฝ๊ณ ๋Š” ์‰ฌ์šด ํŽธ์ธ ์ค„ ์•Œ์•˜๋Š”๋ฐ... ์šฐ์„  ํฌ๋ ˆ์ธ์˜ ๋ฌด๊ฒŒ ์ œํ•œ๊ณผ, ๋ฐ•์Šค๋“ค์˜ ๋ฌด๊ฒŒ๋ฅผ ๋ฆฌ์ŠคํŠธ์— ์ €์žฅ ํ›„ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ ๋‹ค์Œ ์ œ์ผ ๋ฌด๊ฑฐ์šด ๋ฌด๊ฒŒ๋ฅผ ๋“ค ์ˆ˜ ์žˆ๋Š” ํฌ๋ ˆ์ธ์ด ๊ฐ€์žฅ ๋ฌด๊ฑฐ์šด ๋ฐ•์Šค๋ฅผ ๋ชป ๋“ค ๊ฒฝ์šฐ์—๋Š” -1์ถœ๋ ฅ ํ›„ ํ”„๋กœ๊ทธ๋žจ ์ข…๋ฃŒ. ํฌ๋ ˆ์ธ์ด j๋ฒˆ์งธ ๋ฐ•์Šค๋ฅผ ๋“ค ์ˆ˜ ์žˆ์œผ๋ฉด ๋ฆฌ์ŠคํŠธ์—์„œ ์‚ญ์ œ ํฌ๋ ˆ์ธ์ด j๋ฒˆ์งธ ๋ฐ•์Šค๋ฅผ ๋“ค ์ˆ˜ ์—†์œผ๋ฉด j++ ์ฒ˜์Œ์—” ํฌ๋ ˆ์ธ ๋ฆฌ์ŠคํŠธ๋Š” ์กฐํšŒ๋งŒ ์ด๋ฃจ์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ๋ฐฐ์—ด์— ์ €์žฅ์„ ํ•˜์˜€๊ณ , ๋ฐ•์Šค ๋ฆฌ์ŠคํŠธ๋Š” ์‚ญ์ œ๊ฐ€ ๋นˆ๋ฒˆํ•˜๊ฒŒ ์ง„ํ–‰๋œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์—ฌ LinkedList๋กœ ์ €์žฅํ•˜์˜€๋‹ค. → BufferedReader + LinkedList ์กฐํ•ฉ → ์‹คํŒจ!!! (์•„๋ฌด๋ž˜๋„ while - for - for ๋กœ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋‹น์—ฐํ•œ...) ๊ณ„์† ํ‹€๋ฆฌ๋‹ค๊ฐ€ ..

[์•Œ๊ณ ๋ฆฌ์ฆ˜] ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ - ํ€ต ์ •๋ ฌ(Quick Sort)

ํ€ต์ •๋ ฌ(Quick Sort) : ๋ฐฐ์—ด์—์„œ ํ•˜๋‚˜์˜ ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ(pivot) ์•ž์—๋Š” ๊ธฐ์ค€๊ฐ’๋ณด๋‹ค ์ž‘์€ ์š”์†Œ๋“ค, ๋’ค์—๋Š” ๊ธฐ์ค€๊ฐ’๋ณด๋‹ค ๋†’์€ ์š”์†Œ๋“ค์ด ์˜ค๋„๋ก ์ •๋ ฌํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜(๋ถ„ํ• ์ •๋ณต) ๋ฆฌ์ŠคํŠธ์—์„œ ํ•˜๋‚˜์˜ ์›์†Œ๋ฅผ ๊ณ ๋ฅธ๋‹ค. → ๊ธฐ์ค€๊ฐ’(Pivot), ์›์†Œ๋ฅผ ๊ณ ๋ฅด๋Š” ๊ธฐ์ค€์€ ๋”ฐ๋กœ ์—†๋‹ค. ๋‹ค๋งŒ ๋ณดํ†ต ๊ฐ€์šด๋ฐ ์›์†Œ๋ฅผ ๊ณ ๋ฅด๋Š” ํŽธ. ๊ธฐ์ค€๊ฐ’ ์•ž์—๋Š” ๊ธฐ์ค€๊ฐ’๋ณด๋‹ค ์ž‘์€ ์›์†Œ๋“ค, ๋’ค์—๋Š” ๊ธฐ์ค€๊ฐ’๋ณด๋‹ค ๋†’์€ ์š”์†Œ๋“ค๋กœ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋‘๊ฐœ๋กœ ๋‚˜๋ˆˆ๋‹ค.(๋ถ„ํ• ) ๋ถ„ํ• ๋œ ๋ฆฌ์ŠคํŠธ๊ฐ€ 0 ๋˜๋Š” 1์ด ๋œ๋‹ค๋ฉด ์ „์ฒด์ ์œผ๋กœ ๋ดค์„ ๋•Œ ๋ฆฌ์ŠคํŠธ๋Š” ์ •๋ ฌ๋œ ์ƒํƒœ๊ฐ€ ๋œ๋‹ค. ํ€ต ์ •๋ ฌ ๊ณผ์ • ํ€ต์ •๋ ฌ ์ฝ”๋“œ(Java) public static void quickSort(int start, int end, int[] arr) { int i, j, pivot; if(start < end) { pi..

[์•Œ๊ณ ๋ฆฌ์ฆ˜] ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ - ํ•ฉ๋ณ‘์ •๋ ฌ(Merge Sort)

ํ•ฉ๋ณ‘์ •๋ ฌ(Merge Sort) : ์ •๋ ฌ๋˜์ง€ ์•Š์€ ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ฐ๊ฐ ํ•˜๋‚˜์˜ ์›์†Œ๋งŒ ํฌํ•จํ•˜๋Š” n๊ฐœ์˜ ๋ถ€๋ถ„๋ฆฌ์ŠคํŠธ๋กœ ๋ถ„ํ• ํ•˜๊ณ  ๋ถ€๋ถ„๋ฆฌ์ŠคํŠธ๊ฐ€ ํ•˜๋‚˜๋งŒ ๋‚จ์„ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•ด์„œ ๋ณ‘ํ•ฉํ•˜๋ฉฐ ์ •๋ ฌ๋œ ๋ถ€๋ถ„๋ฆฌ์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ (๋ถ„ํ• ์ •๋ณต ์•Œ๊ณ ๋ฆฌ์ฆ˜) → ํ”ํžˆ ์‚ฌ์šฉํ•˜๋Š” 2-way ํ•ฉ๋ณ‘์ •๋ ฌ ์ •๋ ฌ๋˜์ง€ ์•Š์€ ๋ฆฌ์ŠคํŠธ๋ฅผ 2๊ฐœ์˜ ๋ถ€๋ถ„๋ฆฌ์ŠคํŠธ๋กœ ๋ถ„ํ•  (Divide) ๋ถ€๋ถ„๋ฆฌ์ŠคํŠธ๋“ค์˜ ์›์†Œ๊ฐ€ 1๊ฐœ์ผ ๋•Œ๊นŒ์ง€ ๋ถ„ํ•  ๊ณ„์† ์ง„ํ–‰ ๋‘๊ฐœ์˜ ๋ถ€๋ถ„๋ฆฌ์ŠคํŠธ๋ฅผ ํ•˜๋‚˜์˜ ์ •๋ ฌ๋œ ๋ฆฌ์ŠคํŠธ๋กœ ํ•ฉ๋ณ‘ํ•œ๋‹ค. (Conquer) ์ตœ์ข… ๋ถ€๋ถ„๋ฆฌ์ŠคํŠธ๊ฐ€ 1๊ฐœ๊ฐ€ ๋  ๋•Œ๊นŒ์ง€ ํ•ฉ๋ณ‘ ๊ณ„์† ์ง„ํ–‰ ํ•ฉ๋ณ‘์ •๋ ฌ ๊ณผ์ • ํ•ฉ๋ณ‘์ •๋ ฌ ์ฝ”๋“œ(Java) public static void mergeSort(int start, int end, int[] arr) { if(end-start == 1) { // ๋ถ€๋ถ„๋ฆฌ์ŠคํŠธ์˜ ์›์†Œ๊ฐ€..

[์•Œ๊ณ ๋ฆฌ์ฆ˜] ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ - ์‚ฝ์ž…์ •๋ ฌ, ์„ ํƒ์ •๋ ฌ, ๋ฒ„๋ธ”์ •๋ ฌ

1. ์‚ฝ์ž…์ •๋ ฌ(Insertion Sort) : ์ž๋ฃŒ ๋ฐฐ์—ด์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ์•ž์—์„œ๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ์ด๋ฏธ ์ •๋ ฌ๋œ ๋ฐฐ์—ด ๋ถ€๋ถ„๊ณผ ๋น„๊ตํ•˜์—ฌ, ์ž์‹ ์˜ ์œ„์น˜๋ฅผ ์ฐพ์•„ ์‚ฝ์ž…ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ → i๋ฒˆ์งธ ๋ฐ์ดํ„ฐ๋ฅผ ์•ž์ชฝ ๋ฐ์ดํ„ฐ์™€ ๋น„๊ตํ•˜์—ฌ ์•Œ๋งž์€ ์ž๋ฆฌ์— ์‚ฝ์ž…ํ•ด์ฃผ๋Š” ๋ฐฉ๋ฒ• 8, 10, 9, 7, 3 ์œ„์™€ ๊ฐ™์€ ๋ฐฐ์—ด์ด ์žˆ๋‹ค๊ณ  ํ•˜์ž. ๋ชจ๋“  ๋ฐฐ์—ด์ด ์ •๋ ฌ์ด ์•ˆ๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ๋งจ ์•ž์ด ์•„๋‹Œ ๋‘ ๋ฒˆ์งธ ์š”์†Œ๋ถ€ํ„ฐ ํ™•์ธ์„ ํ•œ๋‹ค. 8, 10, 9, 7, 3 ๋‘ ๋ฒˆ์งธ ์š”์†Œ์ธ 10์€ ์ฒซ ๋ฒˆ์งธ ์š”์†Œ 8๊ณผ ๋น„๊ต๋ฅผ ํ•˜๋ฉด 8์˜ ์˜ค๋ฅธ์ชฝ์— ์œ„์น˜ํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์ด ๋งž์œผ๋ฏ€๋กœ ์œ„์น˜๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ๊ทธ๋Œ€๋กœ ๋‚ด๋ฒ„๋ ค๋‘”๋‹ค. 10์˜ ์ž๋ฆฌ๊ฐ€ ๊ฒฐ์ •๋˜์—ˆ์œผ๋ฏ€๋กœ ๋‹ค์Œ ์š”์†Œ๋ฅผ ์ •๋ ฌํ•œ๋‹ค. 8, 10, 9, 7, 3 ์„ธ ๋ฒˆ์งธ ์š”์†Œ์ธ 9๋Š” ๋‘ ๋ฒˆ์งธ ์š”์†Œ 10๊ณผ ๋น„๊ต๋ฅผ ํ•˜๋ฉด 10์˜ ์™ผ์ชฝ์— ์œ„์น˜ํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์ด..