๋ฌธ์
ํ์ด ๊ณผ์
์์ธ๊ฐ ์ฃผ์ด์ง ๋ฐฐ์ด์์ ์ฃผ์์ ์ฌ๊ณ ํ์์ ๋ ๊ฐ์ฅ ํฐ ์ด์ค์ ๋จ๊ธฐ๋ ๋ฐฉ๋ฒ์ ์ฐพ๋ ๋ฌธ์ ์
๋๋ค.
์ง๊ด์ ์ผ๋ก ์ฃผ์์ด ๊ฐ์ฅ ๋ฎ์ ๋ ์ฌ์ ๊ฐ์ฅ ๋์ ๋ ํ๋ ๊ฒ์ด ๊ฐ์ฅ ํฐ ์ด์ค์ ๋จ๊ธด๋ค๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
๋ฐ๋ผ์ ๋ฐฐ์ด์ ๊ฐ ์์๋ฅผ ์ํํ๋ฉฐ ์ต์ ๋น์ฉ
๊ฐ์ ๊ฐฑ์ ํด์ฃผ๋ ๊ฒ๊ณผ ๋์์ ๊ฐ ์ํ๋ง๋ค ํ์ฌ ์ธ๋ฑ์ค๊น์ง ํ์ํ์ต์ ๋น์ฉ
๊ณผ์ ์ฐจ์ด๊ฐ์ ํตํด ์ต๋ ํ๋งค ์์ต
์ O(N)
์ ์๊ฐ ๋ณต์ก๋๋ก ์ป์ ์ ์์ต๋๋ค.
์ ๋น์ฑ ์ฆ๋ช
์ต์ ๋น์ฉ์ ์ ํํ๋ ์ฐ๋ฆฌ์ ํ์ ์๊ณ ๋ฆฌ์ฆ
์ ์๋ช
ํ๊ธฐ ๋๋ฌธ์ ๊ฐ๋จํ ์ฆ๋ช
ํ๊ณ O(N)
์ ํ์์ ์ํํ ์ ์๋ค๋ ์ ๋น์ฑ์ ๋ฐ์ ธ๋ณด๊ฒ ์ต๋๋ค.
์ฐ์ ๋งค ์์ธ๋ง๋ค ์ต์๋น์ฉ์ ๊ฐฑ์ ํ ๊ฒฐ๊ณผ ์ต์ ํด๋ฅผ ์ฐพ์ง ๋ชปํ๋ค๊ณ ํ๊ฒ ์ต๋๋ค.
์ด ๊ฒฝ์ฐ ์ค์ ์ต์ ํด(๊ฐ์ )์๋ ์ ์๊ณ ๋ฆฌ์ฆ์ด ์ฒ์ ์๋ชป ์ ํํ ๋น์ฉ J ๋ณด๋ค ํฐ ์์ธ K๊ฐ ์์์๋ ์ต์ ํด๋ฅผ ์ฐพ์๋ค๋ ๋ป์
๋๋ค.
์ฌ๊ธฐ์ K ๋์ ์ J ๋ฅผ ์ ํํ ๊ฒฝ์ฐ ์ต๋ ์ด์ค์ ์ปค์ง๋ฉด ์ปค์ก์ง ์ ๋ ์ํด๋ณด๋ ์ผ์ ๋ฐ์ํ์ง ์์ต๋๋ค.
๊ทธ๋ ๋ค๋ฉด O(N)
์ ํ์์ ์ํํ๋ ๊ฒ์ด ์ฌ๋ฐ๋ฅธ ์ต์ ํด๋ฅผ ๊ตฌํ๋ ๊ฒ์ ์ด๋ป๊ฒ ๋ณด์ฅํด์ค ์ ์์ ๊น์?
์ด๋ฅผ ์ํด ํ ์์ i
์์ price[i] - minValue
๋ฅผ ํตํด ์ต๋ ์ด์ค์ ๊ณ์ฐํ๋ค๊ณ ๊ฐ์ ํ๊ฒ ์ต๋๋ค.
์ด๋ ์ฐ๋ฆฌ๊ฐ ํ์ํ minValue
๋ 0 ~ i ๊น์ง์ ์ต์ ์์ธ
์ธ ๊ฒ์ ์๋ช
ํ ์ฌ์ค์
๋๋ค.
์ฐ๋ฆฌ์ ์๊ณ ๋ฆฌ์ฆ์ด ์์ i
๊น์ง ํ์์ ์ํํ๋ ๋์ ๊ณ์ ์ต์ ์์ธ๋ฅผ ๊ณ์ ๊ฐฑ์ ํ์์ผ๋ฏ๋ก
์ฌ๋ฐ๋ฅธ ๋ต์ ๊ตฌํ ์ ์๋ค๋ ๊ฒ์ ๋ณด์ฅํ ์ ์์ต๋๋ค.
์ฝ๋
/**
* @param {number[]} prices
* @return {number}
*/
var maxProfit = function (prices) {
let minValue = 987654321;
let maxProfit = 0;
for (let price of prices) {
minValue = Math.min(minValue, price);
maxProfit = Math.max(maxProfit, price - minValue);
}
return maxProfit;
};
'๐ algorithm > leetcode' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
LeetCode 22 - Generate Parentheses (Medium) (0) | 2021.03.02 |
---|---|
LeetCode 62 - Unique Paths (Medium) (0) | 2021.03.02 |
LeetCode 101 - Symmetric Tree (Easy) (0) | 2021.03.02 |
LeetCode 876 - Middle of the Linked List (Easy) (0) | 2021.03.02 |
LeetCode 221 - Maximal Square (Medium) (0) | 2021.03.02 |
๐ฌ ๋๊ธ