๋ฌธ์ ํ์
i
๋ ์ฃผ์ ๊ฐ๊ฒฉ์ prices[i]
๊ณผ ๊ฐ์ด ๋ฐฐ์ด ํํ๋ก ์ฃผ์ด์ง๋ค.
์ต๋๋ก ์์ต์ ๋ฐํํด์ผํ๋ค.
๋ง์ฝ, ์ด๋ ํ ์์ต๋ ์ป์ง ๋ชปํ๋ค๋ฉด 0 ์ ๋ฐํํ๋ค.
ํ์ด
1๏ธโฃ ์ด์ค for๋ฌธ ํ์ด - ์๊ฐ ์ด๊ณผ
๊ฐ์ฅ ๋จผ์ ๋ ์ค๋ฅธ ํ์ด๋, ํ๋ ๋ ์ ๊ณ ์ ํ๊ณ
ํ๋ ๋ ์ด์ ์ ๊ฐ๊ฒฉ๋ค์ ์ํํ๋ฉด์ ์ต๋๊ฐ์ ๊ตฌํด์ผ๊ฒ ๋ค๊ณ ์๊ฐํ๋ค.
class Solution {
public int maxProfit(int[] prices) {
int ans = 0;
for (int i = 1; i < prices.length; i++) {
int sell = prices[i];
for (int j = 0; j < i; j++) {
int buy = prices[j];
int profit = sell - buy;
if (profit > 0) {
ans = Math.max(ans, profit);
}
}
}
return ans;
}
}
๊ฒฐ๊ณผ
ํ์ง๋ง, ์ด ๋ฐฉ์์ ์๊ฐ ๋ณต์ก๋๊ฐ O(N^2) ์ผ๋ก ์๊ฐ ์ด๊ณผ๊ฐ ๋ฐ์ํ๋ค.
์๊ฐ ๋ณต์ก๋๊ฐ O(N) ์ด ๋ ์ ์๋ ํ์ด๋ฅผ ๋ค์ ์๊ฐํด๋ณด์๋ค.
2๏ธโฃ O(N) ํ์ด
๋จผ์ ํน์ ๊ตฌ์ญ์์ ๊ฐ์ฅ ๋ฎ์ ๊ฐ์ ๊ตฌํ ์ ์๋ ๋ก์ง์ ์๊ฐํด๋ดค๋ค.
๊ฐ์ฅ ์ธ๊ฒ ์ฌ์ผ ์ด์ต์ ์ต๋ํ ํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
int buy = prices[0];
for(int i=1;i<prices.length;i++){
if(prices[i]<buy){
buy = prices[i];
}
}
์์ ๊ฐ์ ์ฝ๋๋ก ์์ฑํ๋ฉด, 0~i๋ฒ์งธ ์์ ์ค์์ ๊ฐ์ฅ ์์ ๊ฐ์ด buy
์ ์
๋ ฅ๋๋ค.
๋ง์ฝ, ๋น๊ตํ๋ ๊ฐ๊ฒฉ( prices[i]
) ์ด buy
๋ณด๋ค ํฐ ๊ฒฝ์ฐ๋ ํ๋งค๋ฅผ ํ ์ ์๊ณ
์ด์ต์ ๊ณ์ฐํด์ ์ต๋๊ฐ์ด๋ฉด ๊ฐฑ์ ํด์ฃผ๋ ์์ ์ ํด์ฃผ๋ฉด ๋๋ค.
class Solution {
public int maxProfit(int[] prices) {
int ans = 0;
int buy = prices[0];
for (int i = 1; i < prices.length; i++) {
if (prices[i] < buy) {
buy = prices[i];
} else {
ans = Math.max(ans, prices[i] - buy);
}
}
return ans;
}
}
๊ฒฐ๊ณผ
๐ ํ๊ณ
์ฌ์ค ์ด์ค for๋ฌธ ๋ฐฉ์์ผ๋ก ํต๊ณผํ ์ ๋๋ก ์ฐ์ฐ ์๊ฐ์ด ๋๋ํ ๋ฌธ์ ๋ ๊ฑฐ์ ์๋ค..ใ
์ด์ค for๋ฌธ ๋ฐฉ์์ด ๋จผ์ ๋ ์ฌ๋๋ค๋ฉด, ๋ ์ข์ ๋ฐฉ๋ฒ์ด ์๋์ง ๊ณ ๋ฏผํด๋ณด๋ ์ต๊ด์ ๊ฐ์ ธ์ผ๊ฒ ๋ค.