Skip to content

Commit 60b4bfc

Browse files
committed
best time to buy and sell stock
1 parent 2c52d14 commit 60b4bfc

File tree

1 file changed

+55
-0
lines changed

1 file changed

+55
-0
lines changed
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
// ํ’€์ด ๋ฐฉ๋ฒ•
2+
// 1. ์ธ๋ฑ์Šค x๊นŒ์ง€์˜ ์ตœ์†Œ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ๋ฐฐ์—ด 1๊ฐœ์™€, ์ธ๋ฑ์Šค x๋ถ€ํ„ฐ์˜ ์ตœ๋Œ€๊ฐ’์„ ์ €์žฅํ•˜๋Š” ๋ฐฐ์—ด 1๊ฐœ๋ฅผ ๋งŒ๋“ ๋‹ค.
3+
// 2. 1๋ฒˆ์—์„œ ๋งŒ๋“  ๋‘ ๋ฐฐ์—ด์— ๊ฐ’์„ ์ฑ„์šด๋‹ค.
4+
// 3. ๋‘ ๋ฐฐ์—ด์„ ๊ฐ๊ฐ ์ธ๋ฑ์Šค ๋ณ„๋กœ ์ฐจ๋ฅผ ๊ตฌํ•˜๊ณ , ๊ทธ ์ค‘ ์ตœ๋Œ“๊ฐ’์„ ๊ตฌํ•œ๋‹ค.
5+
6+
// ์‹œ๊ฐ„ ๋ณต์žก๋„
7+
// O(n) : ๋ฐฐ์—ด์„ 2๋ฒˆ ์ˆœํšŒํ•˜๋ฏ€๋กœ O(n)์ด๋‹ค.
8+
// ๊ณต๊ฐ„ ๋ณต์žก๋„
9+
// O(n) : ์ตœ์†Œ๊ฐ’๊ณผ ์ตœ๋Œ€๊ฐ’์„ ์ €์žฅํ•˜๋Š” ๋ฐฐ์—ด์„ ๋งŒ๋“ค์—ˆ์œผ๋ฏ€๋กœ O(n)์ด๋‹ค.
10+
11+
class Solution {
12+
public int maxProfit(int[] prices) {
13+
int len = prices.length;
14+
int[] minArr = new int[len];
15+
int[] maxArr = new int[len];
16+
17+
for(int i=0;i<len;i++){
18+
if(i==0){
19+
minArr[i] = prices[i];
20+
maxArr[len-i-1] = prices[len-i-1];
21+
}else{
22+
minArr[i] = Math.min(minArr[i-1], prices[i]);
23+
maxArr[len-i-1] = Math.max(maxArr[len-i], prices[len-i-1]);
24+
}
25+
}
26+
27+
int result = 0;
28+
for(int i=0;i<len;i++){
29+
result = Math.max(result, maxArr[i]-minArr[i]);
30+
}
31+
return result;
32+
}
33+
}
34+
35+
36+
// 2nd solution
37+
// ์‹œ๊ฐ„ ๋ณต์žก๋„: O(n)
38+
// ๊ณต๊ฐ„ ๋ณต์žก๋„: O(1)
39+
40+
class Solution{
41+
public int maxProfit(int[] prices){
42+
int len = prices.length;
43+
int buy = prices[0];
44+
int result = 0;
45+
46+
for(int i=1;i<len;i++){
47+
if(prices[i]<buy){ // ๋” ์ €๋ ดํ•œ ์ฃผ์‹์ด ์žˆ์œผ๋ฏ€๋กœ
48+
buy = prices[i]; // ์ด ์ฃผ์‹์„ ์‚ฐ๋‹ค.
49+
}else{
50+
result = Math.max(result, prices[i]-buy); // ํ˜„์žฌ ์ฃผ์‹์„ ํŒ”์•˜์„ ๋•Œ ์ด๋“์ด ๋” ํฌ๋‹ค๋ฉด ํŒ๋‹ค.
51+
}
52+
}
53+
return result;
54+
}
55+
}

0 commit comments

Comments
ย (0)