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 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; +}