๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์•Œ๊ณ ๋ฆฌ์ฆ˜/์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ด๋ก 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.