์๊ณ ๋ฆฌ์ฆ/์๊ณ ๋ฆฌ์ฆ ์ด๋ก 10 ํฌ ํฌ์ธํฐ - ์๊ณ ๋ฆฌ์ฆ ๐ฉ๐ป ํฌ ํฌ์ธํฐ (Two Pointers)๋ฐฐ์ด์์ "๋ ๊ฐ์ ํฌ์ธํฐ"๋ฅผ ์ฌ์ฉํ์ฌ ์ํ๋ ๊ฒฐ๊ณผ๋ฅผ ์ป๋ ๋ฐฉ๋ฒ โจ ๋ ๊ฐ ํฌ์ธํฐ์ ๋ฐฐ์น ๋ฐฉ๋ฒ๊ฐ์ ๋ฐฉํฅ์์ ์์ : ์ฒซ ๋ฒ์งธ ์์์ ๋ ๋ค ๋ฐฐ์น์๋ก ๋ค๋ฅธ ๋ฐฉํฅ์์ ์์ : ์ฒซ ๋ฒ์งธ ์์์ ๋ง์ง๋ง ์์์ ๋ฐฐ์น๋ค์ค for๋ฌธ์ ๋ณต์ก๋๋ฅผ ์ข ๋ ์ ํ์ ์ผ๋ก ํ ์ ์๋ค!! โ๏ธ ํฌ ํฌ์ธํฐ์ ์์ex01) ์๋ ๋ฐฐ์ด์์ ๋ถ๋ถํฉ์ด 9๊ฐ ๋๋ ๊ตฌ๊ฐ์ ์ฐพ๋ ๋ฐฉ๋ฒ* ๊ธฐ์กด ๋จ์ for ๋ฌธ ์ด์ฉ์ : ์๊ฐ ๋ณต์ก๋ O(n^2)* ํฌ ํฌ์ธํฐ ์ฌ์ฉ์ : ์๊ฐ ๋ณต์ก๋ O(n) โ๏ธ Java ๊ตฌํpublic class Main{ // ์์ ์์๋ฅผ ๊ธฐ์กด์ 2์ค for๋ฌธ์ผ๋ก ํ์์ ๋ : O(n^2) pubic static int[] forLoop(int[] arr, int tar.. 2024. 7. 20. ์ด์ง ํ์ - ์๊ณ ๋ฆฌ์ฆ ๐ฉ๐ป ์ด์ง ํ์ (Binary Search) ๋?์ด์ง ํ์์ (= ์ด๋ถ ํ์) ์ ๋ ฌ๋ ์ํ์ ๋ฐ์ดํฐ์์ ํน์ ๊ฐ์ ๋น ๋ฅด๊ฒ ํ์ํ๋ ๋ฐฉ๋ฒ์ด๋ค.์ฐพ๊ณ ์ ํ๋ ๊ฐ๊ณผ ๋ฐ์ดํฐ ์ค์์ ์๋ ๊ฐ์ ๋น๊ต์ฐพ๊ณ ์ ํ๋ ๊ฐ์ด ๋ ์์ผ๋ฉด ๋ฐ์ดํฐ ์ผ์ชฝ ๋ถ๋ถ์์ ์ด์ง ํ์์ฐพ๊ณ ์ ํ๋ ๊ฐ์ด ๋ ํฌ๋ฉด ๋ฐ์ดํฐ ์ค๋ฅธ์ชฝ ๋ถ๋ถ์์ ์ด์ง ํ์ โ๏ธ ์๊ฐ ๋ณต์ก๋์๊ณ ๋ฆฌ์ฆ ์๊ฐ ๋ณต์ก๋ : O(logN) โ๏ธ ์ด์ง ํ์ ๊ณผ์ * ๋ฐ์ดํฐ๊ฐ ์ฐ์ ์ ๋ ฌ๋ ์ํ์ฌ์ผ ์ด์ง ํ์ ์งํ์ด ๊ฐ๋ฅํ๋ค.์ฐพ๊ณ ์ ํ๋ ๋ฐ์ดํฐ x๋ฅผ ๊ธฐ์ค์ผ๋ก mid ๊ฐ๊ณผ ๋น๊ตํ์ฌ ๋ฒ์๋ฅผ ์ค์ฌ๋๊ฐ๋ฉฐ ์ฐพ์๊ฐ๋ ๋ฐฉ์์ด๋ค. โ๏ธ ์ด์ง ํ์ ๊ตฌํ ๊ณผ์ โจ ๋ฐ๋ณต๋ฌธ ๊ตฌ์กฐpublic class Main{ public static int binarySearch(int arr[], int target){.. 2024. 7. 20. ์ ๋ ฌ (Sort) - ์๊ณ ๋ฆฌ์ฆ ๐ฉ๐ป ์ ๋ ฌ์ด๋?ํน์ ๊ฐ์ ๊ธฐ์ค์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์์๋๋ก ๋ฐฐ์นํ๋ ๋ฐฉ๋ฒโจ ์ ๋ ฌ์ ์ข ๋ฅ ๊ตฌํ ๋์ด๋๋ ์ฝ์ง๋ง, ์๋๋ ๋๋ฆฐ ์๊ณ ๋ฆฌ์ฆ๋ฒ๋ธ ์ ๋ ฌ์ฝ์ ์ ๋ ฌ์ ํ ์ ๋ ฌ ๊ตฌํ ๋์ด๋๋ ์กฐ๊ธ ๋ ์ด๋ ต์ง๋ง, ์๋๋ ๋น ๋ฅธ ์๊ณ ๋ฆฌ์ฆํฉ๋ณ ์ ๋ ฌ (Merge sort)ํ ์ ๋ ฌํต ์ ๋ ฌ (Quick Sort)ํธ๋ฆฌ ์ ๋ ฌํ์ด๋ธ๋ฆฌ๋ ์ ๋ ฌํ ์ ๋ ฌ๋ธ๋ก ๋ณํฉ ์ ๋ ฌ์ธํธ๋ก ์ ๋ ฌ๊ธฐํ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ๊ธฐ์ ์ ๋ ฌ์นด์ดํ ์ ๋ ฌ์ ์ ๋ ฌ๋ณด๊ณ ์ ๋ ฌ 1. ๋ฒ๋ธ์ ๋ ฌ (Bubble Sort)์ธ์ ํ ๋ฐ์ดํฐ๋ฅผ ๋น๊ตํ๋ฉฐ ์๋ฆฌ๋ฅผ ๋ฐ๊พธ๋ ๋ฐฉ์์๊ณ ๋ฆฌ์ฆ ๋ณต์ก๋ : O(n^2) 2. ์ฝ์ ์ ๋ ฌ (Insertion Sort)์์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฌํด๊ฐ๋ฉด์ ์ฝ์ ์์น๋ฅผ ์ฐพ์ ์ ๋ ฌํ๋ ๋ฐฉ์์๊ณ ๋ฆฌ์ฆ ๋ณต์ก๋ : O(n^2)index0์ด ์๋ 1๋ถํฐ ์์, ํ์ฌ index์ ๊ทธ ์ index๋ค์ ๋น๊ต.. 2024. 6. 25. Knapsack problem - Dynamic Program ์ค์ํ ์๊ณ ๋ฆฌ์ฆ ์ธ ๊ฐ์ง์ค ํ๋์ธ Dynamic Program ์ ์ ๋ช ํ ์์ ์ธ ๋ฐฑ์ค 12865๋ฒ ๋ฐฐ๋ญ๋ฌธ์ ๋ฅผ ํ์ด๋ณด์๋ค. Knapsack problem์ ์ฃผ์ด์ง ๋ฌด๊ฒ ์ ํ ์์์ ๊ฐ ์์ดํ ๋ค์ ๋ฌด๊ฒ์ ๊ฐ์น๋ฅผ ์กฐํฉํ์ฌ ์ ์๋ ์ต๋ ๊ฐ์น๋ฅผ ๊ตฌํ๋ ๋ฌธ์ ์ด๋ค. ํด๋น ๋ฌธ์ ๋ฅผ Dynamic Program์ผ๋ก ์ ๊ทผํ๋๋ฐ์๋ ์ด์ ๊ฐ ์๋ค.์ฐ์ ๋จ์ ์ ๊ทผ๋ฒ์ผ๋ก ํด๋น ๋ฌธ์ ๋ฅผ ํผ๋ค๋ฉด item ํ๋๋น ์ ํ ๋๋ ๋น์ ํ์ ๊ฒฝ์ฐ๋ฅผ ๊ณ ๋ฅด๊ฒ ๋๋ฏ๋ก ์ด 2^n ์ด๋ ์๊ฐ์ด ๊ฑธ๋ฆฐ๋ค. Greedy Algorithm ์ผ๋ก ํด๋น ๋ฌธ์ ๋ฅผ ์ ๊ทผํ๋ค๋ฉด ์ด๋ค๊ฒ์ greedy ์ ๋ต์ผ๋ก ์ ํํด์ผํ ์ง ๊ณจ๋ผ์ผ ํ๋๋ฐ value ๊ฐ์ด ํฐ ๊ฒ๋ถํฐ ์ ํํ๊ฒ ๋๋ค๋ฉด optimalํ solution์ ๊ฐ์ง์ง ๋ชปํ๋ ๊ฒฝ์ฐ๊ฐ ์๊ธด๋ค.๊ทธ๋ ๋ค๊ณ ๋ฌด๊ฒ๊ฐ ์ ์ ๊ฒ ๋ถํฐ .. 2023. 5. 20. ์ด์ 1 2 ๋ค์