์ธ๋ถ ์ ๋ ฌ(External Sort)์ด๋? ๋ฐ์ดํฐ๋ค์ ํฌ๊ธฐ๊ฐ ์ฃผ๊ธฐ์ต์ฅ์น๋ณด๋ค ์ปค ์ ๋ ฌ ํ ๋ฐ์ดํฐ๋ค์ ์ฃผ๊ธฐ์ต์ฅ์น์ ์จ์ ํ ์ ๋ ฅํ ์ ์๋ ๊ฒฝ์ฐ ์ฌ์ฉ๋๋ ์ ๋ ฌ ๋ฐฉ๋ฒ์ ์๋ฏธํ๋ค. ์๋ฅผ ๋ค์ด ์ฃผ๊ธฐ์ต์ฅ์น๊ฐ 1GB๊ณ , ๋ฐ์ดํฐ ํ์ผ์ด ์ด 100GB๋ผ๊ณ ํ์ ๋ ๋ด๋ถ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ฌ ์ ๋ ฌํ ์ ์๋ค. ์ธ๋ถ ์ ๋ ฌ ๊ณผ์ ๋ถํ ์ธ๋ถ ์ ๋ ฌ์ ์ฃผ๊ธฐ์ต์ฅ์น์์ ์์ฉํ ์ ์๋ ๋ฐ์ดํฐ์ ๋ํด์๋ง ์ฝ์ด, ๋ด๋ถ์ ๋ ฌ์ ์ํ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์กฐ ๊ธฐ์ต ์ฅ์น์ ๋ค์ ์ ์ฅํ๋ค. ์ฌ๊ธฐ์ ๋ด๋ถ ์ ๋ ฌ์ ์ํฉ์ ๋ง๋ ์ ๋ ฌ์ ์ฌ์ฉํ๋ฉด ๋๋ค. 1. ๋ฉ๋ชจ๋ฆฌ ๋งํผ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์จ๋ค. 2. ํ์ฉํ ๋ด๋ถ ์ ๋ ฌ์ ์ด์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฌํ๋ค. 3. ์ ๋ ฌ๋ ๋ฐ์ดํฐ๋ฅผ ๋ณด์กฐ ๊ธฐ์ต ์ฅ์น์ ๊ธฐ๋กํ๋ค. ์ ๋ณต ์ ๋ ฌ๋์ด ๋๋ ์ง ๋ธ๋ก๋ค์ ํ๋์ ๋ธ๋ก์ผ๋ก ๋ง๋ค๊ธฐ ์ํด Merge ..
์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ ๋น๊ต Reference https://d2.naver.com/helloworld/0315536
https://programmers.co.kr/learn/courses/30/lessons/67258?language=java ์ฝ๋ฉํ ์คํธ ์ฐ์ต - ๋ณด์ ์ผํ ["DIA", "RUBY", "RUBY", "DIA", "DIA", "EMERALD", "SAPPHIRE", "DIA"] [3, 7] programmers.co.kr ๋ฌธ์ ์ ๋ฆฌ 1. ์ง์ด๋ ๋ชจ๋ ์ข ๋ฅ์ ๋ณด์์ ์ ์ด๋ 1๊ฐ ์ด์ ํฌํจํ๋ ๊ฐ์ฅ ์งง์ ์ฐ์๋ ๊ตฌ๊ฐ์ ๊ตฌํ์ธ์. 2. ๋ง์ฝ ๊ฐ์ฅ ์งง์ ์ฐ์๋ ๊ตฌ๊ฐ์ด ์ฌ๋ฌ๊ฐ๋ผ๋ฉด, ๊ฐ์ฅ ์ผ์ชฝ์ ์์นํ ๊ตฌ๊ฐ์ ๋ฐํํ์ธ์. 3. ์ง์ด๋ ๋ชจ๋ ์ข ๋ฅ์ ๋ณด์์ ์ ์ด๋ 1๊ฐ ์ด์ ํฌํจํ๋ ๊ตฌ๊ฐ์ ๋ฌด์กฐ๊ฑด 1๊ฐ ์ด์ ์กด์ฌํฉ๋๋ค. ์ ๊ทผ ๋ฐฉ๋ฒ ์์ ํ์ ์ด ๋ฌธ์ ๋ ์ฐ์ ์ ํ๋ ํ๊ฐ์ ํจ์จ์ฑ ํ๊ฐ๊ฐ ์กด์ฌํ๋ค. ํจ์จ์ฑ ํ๊ฐ๊ฐ ์กด์ฌํ๋ค..
ํต ์ ๋ ฌ์ ๊ฐ๋ ํต์ ๋ ฌ์ด๋? ๋ถํ ์ ๋ณต ์๊ณ ๋ฆฌ์ฆ์ ํ๋๋ก, ํ๊ท ์ ์ผ๋ก ๋งค์ฐ ๋น ๋ฅธ ์ํ์๋๋ฅผ ๋ณด์ธ๋ค. ํ์ง๋ง ์ญ์์ผ๋ก ์ ๋ ฌ๋๊ฑฐ๋ ์ด๋ฏธ ์ ๋ ฌ๋ ๋ฐ์ดํฐ๊ฐ ๋ค์ด์ค๋ฉด ๋นํจ์จ์ ์ด๋ค.(๋ถ๊ท ํ ๋ถํ ์ด ์ผ์ด๋จ) ๋ณํฉ์ ๋ ฌ๊ณผ ๋ค๋ฅด๊ฒ ๋๊ฐ์ ํฌ๊ธฐ์ ๋ฆฌ์คํธ๋ก ๋๋๋ ๊ฒ์ด ์๋, ํผ๋ด์ ๊ธฐ์ค์ผ๋ก ๋ฆฌ์คํธ๋ฅผ ๋๋๊ฒ ๋๋ค. ๋ณํฉ์ ๋ ฌ์ ๋ฐฐ์ด์ ์ฐ์ ๊ฐ์ฅ ์์ ๋จ์๋ก ๋๋ ํ์ ๋ฐ์ดํฐ๋ค์ด ์ ๋ ฌ๋๋ ๋ฐ๋ฉด์, ํต ์ ๋ ฌ์ ๋ฐ์ดํฐ๋ฅผ ์กฐ๊ฑด์ ๋ง๊ฒ ์ ๋ ฌ ํ ์์ ๋จ์๋ก ๋๋๋ค. ๋์ ๋ฐฉ์(์ค๋ฆ์ฐจ์ ์ ๋ ฌ) ๋ฆฌ์คํธ ์์ ์๋ ํ ์์๋ฅผ ํผ๋ด์ผ๋ก ์ ํํ๋ค. (์ ๋ ฌ์ ์ํ ๊ธฐ์ค์ด๋ผ๊ณ ๋ณด๋ฉด ๋๋ค) ํผ๋ด์ ๊ธฐ์ค์ผ๋ก ํผ๋ด๋ณด๋ค ์์ ์์๋ค์ ์ผ์ชฝ์ผ๋ก, ํผ๋ด๋ณด๋ค ํฐ ์์๋ค์ ํผ๋ด๋ค์ ์ค๋ฅธ์ชฝ์ผ๋ก ์ฎ๊ฒจ์ง๋ค. ํผ๋ด์ ์ ์ธํ ์ผ์ชฝ ๋ฆฌ์คํธ์ ์ค๋ฅธ์ชฝ ๋ฆฌ์คํธ์ ๋ํด์ ๊ฐ๊ฐ ์ ..
๋ณํฉ ์ ๋ ฌ์ ๊ฐ๋ ๋ณํฉ ์ ๋ ฌ์ด๋? ํ๋์ ๋ฆฌ์คํธ๋ฅผ ๋ ๊ฐ์ ๊ท ๋ฑํ ํฌ๊ธฐ๋ก ์ต๋ํ ๋ถํ ํ๊ณ ๋ถํ ๋ ๋ถ๋ถ ๋ฆฌ์คํธ๋ฅผ ์์๋๋ก ํฉํ๋ ๋ฐฉ์์ด๋ค. ๋ถํ ๋ ๋ฆฌ์คํธ๋ฅผ ์์๋๋ก ํฉ์ณ์ ๋ด๊ธฐ ์ํ ์๋ฃ๊ตฌ์กฐ๊ฐ ์ถ๊ฐ์ ์ผ๋ก ํ์ํ๋ค. ๊ฐ์ฅ ์์ ๋จ์๋ก ์ ๋ฐ์ฉ ์ชผ๊ฐ ํ ๊ฐ์ฅ ์์ ๋จ์๋ถํฐ ๋ค์ ํฉ์ณ๋๊ฐ๋๋ฐ ์ด ํฉ์ณ๋๊ฐ๋ ๊ณผ์ ์์ ๋ฐ์ดํฐ๊ฐ ์ ๋ ฌ์ด ๋๋ค. Divide and Conquer Merge Sort์ ํด๊ฒฐ ์ ๋ต ๋ฌธ์ ๋ฅผ ์์ 2๊ฐ์ ๋ฌธ์ ๋ก ๋ถ๋ฆฌํ๊ณ ๊ฐ๊ฐ์ ํด๊ฒฐํ ๋ค์, ๊ฒฐ๊ณผ๋ฅผ ๋ชจ์์ ์๋์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ์ ๋ต Divide and Conquer ๋ฐฉ์์ ๋๊ฐ ์ฌ๊ท ํธ์ถ์ ์ด์ฉํ์ฌ ๊ตฌํํจ ๋์ ๋ฐฉ์๊ณผ ๊ตฌํ 1. ๋ฐ์ดํฐ๋ค์ ์ ๋ฐ์ผ๋ก ๋๋๋ค. (๋ถํ ) 2. ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ฅ ์์ ๋จ์๋ก ๋ถํดํ ํ ๋งจ ๋ฐ์์ ๋ถํฐ ์ฐจ๋ก๋๋ก ํฉ๋ณ์ ์งํ..