⚡문제정보
예전에 코딩테스트 볼 때 같은 문제가 나온 적 있었는데
따흐흑 하면서 못풀었던 기억이 있는 문제입니다.
지금 생각해보면 easy일만 하네요
간단하게 생각해서 prices[i]와 이전 값들 중 최저값인 값을 비교하면서
prices[i]가 더 작은 값이라면 최저값으로 prices[i]를 넣어 갱신시켜주고
아니라면 팔았을때 얼마 이득인지 비교해주면서 max값을 집어넣어주면 될것입니다.
🔍나의 풀이
var maxProfit = function(prices) {
let [answer,buy] = [0,Infinity]
for(i=0 ; i<prices.length ; i++) {
if(buy > prices[i]) {
buy = prices[i]
}
else {
answer = Math.max(answer , prices[i]-buy)
}
}
return answer
};
위 문제와 비슷한데 위 문제의 경우 한번만 사고팔수있었던것에 비해
당일 매수매도를 동시에 할수있으면서 매수매도 횟수 제한이 없는 조건입니다.
매수매도횟수제한이 없고 당일매수매도가 가능하다면
탐욕법으로 최적해를 도출할 수 있을것입니다.
조금이라도 이익이 생기면 팔고 당일매수매도가 되니까
내일가격이 오늘 가격보다 적을때만 매수를 안하면 될것입니다.
var maxProfit = function(prices) {
let answer = 0
for(i=1 ; i<prices.length ; i++) {
if(prices[i] > prices[i-1]) {
answer += prices[i] - prices[i-1]
}
}
return answer
};
오늘 가격이 어제 가격보다 적을때만
answer에 오늘 가격빼기 어제가격을 한 값을 넣어줬습니다.
반응형
'leetcode' 카테고리의 다른 글
2491. Divide Players Into Teams of Equal Skill Javascript (0) | 2023.01.21 |
---|---|
413. Arithmetic Slices Javascript (0) | 2023.01.17 |
561. Array Partition Javascript (0) | 2023.01.16 |
452. Minimum Number of Arrows to Burst Balloons Javascript (1) | 2023.01.16 |
179. Largest Number Javascript (0) | 2023.01.16 |