From 5c65d0c4f0cfe0cdf82d7a8a5dac609bd5dbe46d Mon Sep 17 00:00:00 2001 From: legitgoons Date: Sat, 21 Dec 2024 11:01:12 +0900 Subject: [PATCH 1/2] Best Time to Buy and Sell Stock --- legitgoons/Best Time to Buy and Sell Stock.ts | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 legitgoons/Best Time to Buy and Sell Stock.ts diff --git a/legitgoons/Best Time to Buy and Sell Stock.ts b/legitgoons/Best Time to Buy and Sell Stock.ts new file mode 100644 index 0000000..7c1ae88 --- /dev/null +++ b/legitgoons/Best Time to Buy and Sell Stock.ts @@ -0,0 +1,18 @@ +/** + * 2중 For문 돌리기 -> 시간복잡도 O(n^2)인데 100000^2은 감당불가 + * 투 포인터로 풀면 되지않을까? -> 구현하다가 깨달았는데 투 포인터도 이중 for문이라서 터짐 + * 그냥 반복문 돌면서, 지금까지 값이랑 비교했을 가장 작은값이 얘인지 check + * 그 다음 현재까지 최고이득 vs 지금값 - 최소값 + */ +function maxProfit(prices: number[]): number { + let minPrice = 10000; + let maxProfit = 0; + + for (let i = 0; i < prices.length; i++) { + const nowPrice = prices[i]; + minPrice = Math.min(minPrice, nowPrice); + maxProfit = Math.max(maxProfit, nowPrice - minPrice); + } + + return maxProfit; +} \ No newline at end of file From 67ce4907a71d63cb4b424540dbad546aaba4dc8c Mon Sep 17 00:00:00 2001 From: legitgoons Date: Sat, 28 Dec 2024 10:20:04 +0900 Subject: [PATCH 2/2] Maximum Average Subarray I --- legitgoons/Maximum Average Subarray I.ts | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 legitgoons/Maximum Average Subarray I.ts diff --git a/legitgoons/Maximum Average Subarray I.ts b/legitgoons/Maximum Average Subarray I.ts new file mode 100644 index 0000000..592531d --- /dev/null +++ b/legitgoons/Maximum Average Subarray I.ts @@ -0,0 +1,16 @@ +function findMaxAverage(nums: number[], k: number): number { + let 최대합 = 0; + let 현재합 = 0; + + for (let i = 0; i < k; i++) { + 현재합 += nums[i]; + } + 최대합 = 현재합; + + for (let i = k; i < nums.length; i++) { + 현재합 = 현재합 - nums[i - k] + nums[i]; + 최대합 = Math.max(최대합, 현재합); + } + + return 최대합 / k; +}