[์ด๋ถ ํ์] ์ด๋ถ ํ์(Binary Search) ์ด๋ ?
์ด๋ถ ํ์ ๋ ์ด, ๋๋ ๋ถ์ ์จ์ ์ด๋ถ์ธ๊ฐ? ์ ๋ต, ์ด๋ถ ํ์์ ๋๊ฐ๋ก ๋๋์ด์ ํ์ํ๋ ๊ฒ์ด๋ค. ์๋ฅผ ๋ค์ด, 1๋ถํฐ 10๊น์ง ์๋ค๊ณ ์๊ฐํด๋ณด์. {1, 2, 3, 4, 5, 6, 7, 8, 9, 10} ์ฐ๋ฆฌ๊ฐ 8์ ์ฐพ์ ๋, ๋์ผ๋ก ๋ฐ๋ก ๋ณด์ด๋๊น ์์น๋ฅผ ํ์
ํ ์ ์๋ค. ํ์ง๋ง ๋ช ๋ฒ์งธ์ ์๋๊ฐ? ๋ฐฐ์ด์ 0๋ฒ์งธ๋ถํฐ ์์ํ๋ 7๋ฒ์งธ์ ์๋ค๋ ๊ฒ์ ์ ์ ์๋ค. ์ปดํจํฐ ๋ฐฐ์ด ์ธ๋ฑ์ค ๊ฐ๋
์ด ์๋ ์ฌ๋๋ค์ 8๋ฒ์งธ๋ผ๊ณ ๋ตํ ๊ฒ์ด๋ค. ์ฆ, O(1) ์๊ฐ์ด๋ค. ๊ทธ๋ผ, {1, 4, 7, 10, 12, 23, 30, 35, 100, 120} ์ด ์์ ๋, 35์ ์์น๋? ์ฐ๋ฆฌ๋ ์์์ ๊ฐ์ ์ธ์ด๊ฐ๋ฉด์ ๋ช ๋ฒ์งธ์ ์๋์ง ์ ๊ฒ์ด๋ค. ์ฆ, O(N) ์๊ฐ์ด๋ค. 100๋ง๊ฐ์ ์ซ์๊ฐ ์๋ค๋ฉด? ์ฐ๋ฆฌ๋ 100๋ง๊ฐ๋ฅผ ์ผ์ผ์ด ์ธ๋ค๊ฐ..
2024. 2. 1.
๋ฐฑ์ค - [BOJ 12015] ๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด 2
๋ฐฑ์ค ์จ๋ผ์ธ ์ ธ์ง(BOJ)์์ ์ ๊ณต ๋๋ 12015๋ฒ ๋ฌธ์ ๋ ์ ํ ๋ฌธ์ ๊ฐ ์๋ค. ๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด ๋๋ ์ ๋ฌธ์ ๋ฅผ ๋จผ์ ํ์ด๋ณด๊ณ ์ค๋ ๊ฒ์ ์ถ์ฒํ๋ค. ํด๋น ๋ฌธ์ ๋ ์ต์ฅ ์ฆ๊ฐ ๋ถ๋ถ ์์ด(LIS, Longest Increasing Subsequence)๋ก ์ ๋ช
ํ ๋ฌธ์ ์ด๋ค. ๋ฌธ์ ์์ด A๊ฐ ์ฃผ์ด์ก์ ๋, ๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. ์๋ฅผ ๋ค์ด, ์์ด A = {10, 20, 10, 30, 20, 50} ์ธ ๊ฒฝ์ฐ์ ๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด์ A = {10, 20, 10, 30, 20, 50} ์ด๊ณ , ๊ธธ์ด๋ 4์ด๋ค. ์
๋ ฅ ์ฒซ์งธ ์ค์ ์์ด A์ ํฌ๊ธฐ N (1 ≤ N ≤ 1,000,000)์ด ์ฃผ์ด์ง๋ค. ๋์งธ ์ค์๋ ์์ด A๋ฅผ ์ด๋ฃจ๊ณ ์๋ Ai๊ฐ ์ฃผ์ด์ง๋ค. (1 ≤ Ai ≤..
2024. 2. 1.
1. ์๋ฃ๊ตฌ์กฐ๋?
Data Structure ์ปดํจํฐ๋ Data์ ์งํฉ์ฒด์
๋๋ค. ์ปดํจํฐ์์ Data๋ฅผ ๋ค๋ฃจ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ด ์๊ฒ ์ฃ ? ์ค์ ๋ก ์ฌ๋์ด ์๊ฐํ๊ธฐ์ ์ง๊ด์ ์ด๊ฑฐ๋ ์ํ์ , ๋
ผ๋ฆฌ์ ์ผ๋ก ํด๊ฒฐํ ์ ์๋ ์ฌ๊ณ ๋ฅผ ์ปดํจํฐ์ ์
์ฅ์์ ํํํ ๊ฒ์ด ์๋ฃ๊ตฌ์กฐ์
๋๋ค. ์ปดํจํฐ๋ ์ฌ๋๊ณผ ๋ค๋ฅด๊ฒ ์๊ฐ์ ํ ์ ์๊ธฐ ๋๋ฌธ์ ์ดํดํ ์ ์๋๋ก '๋ช
๋ น'์ ํด์ฃผ์ด์ผ ํฉ๋๋ค. How ? ์ด๋ป๊ฒ ์ปดํจํฐ์๊ฒ ๋ช
๋ น์ ํด์ผ ํ ๊น์? ๊ธฐ๋ณธ์ ์ผ๋ก ์ปดํจํฐ๋ ๋ณ์์ ๊ฐ์ ํ ๋นํ๊ณ ์
, ์ถ๋ ฅ์ ํตํด ์ฐ๋ฆฌ๊ฐ ํ์ธํ ์ ์์ต๋๋ค. ์ด ๋, 1, 2, 3, 4, 5, 7 ์ด ์์ ๋ '6'์ ์ถ๊ฐํ๋๋ฐ ์์๋ฅผ ์ ์งํ๊ณ ์ถ์ต๋๋ค. ์ฆ, ๊ฒฐ๊ณผ๋ฅผ 1 2 3 4 5 6 7๋ก ๋ํ๋ด๊ณ ์ถ์ต๋๋ค. ๋ฐฉ๋ฒ์ ๋ฌด์ํ ๋ง์๋ฐ์. vector arr = {1, 2, 3, 4, 5, 7};..
2024. 1. 26.