본문 바로가기
Coding Test/LeetCode

[Javascript] (LeetCode)121. Best time to buy and sell stock (Easy)

by Chaedie 2022. 7. 21.
728x90

[Javascript] (LeetCode) 121. Best time to buy and sell stock (Easy)

💡 구글에 Javascript 풀이가 많이 없거나, 배운 점이 있으면 포스팅합니다.

내 풀이

/**
 * @param {number[]} prices
 * @return {number}
 */
var maxProfit = function(prices) {
  // 비교해서 전날 보다 싼 날이 있는지 확인 
  // for돌리면서 -되면 팔기, 
  // 그냥 배열에 오늘과 다음날의 비교값을 다 담아서 +인지 아닌지 여부 확인해서 + 이면 팔고 -이면 안팔고 이런식으로 해야될것 같은데 ? 

  const maxNums = [];
  let maxNum = Number.MIN_VALUE;
  let j = 1;
  let i = 0;
  while (j < prices.length) {  
    if (prices[j] < prices[i]) {
      i = j;
      j++;
      continue;
    }

    let diff = prices[j] - prices[i];
    diff = prices[j] - prices[i];
    maxNum = Math.max(diff, maxNum);
    j++;  
  }


  return maxNum;
};
  • 한번만 거래할수 있다는 가정이 있어서 가장 좋은 결과를 낼수 있는 타이밍을 찾는 문제였다.
  • for문으로 자꾸 해결하려다 보니 복잡했는데, while로 풀게 되니 금방 풀리게 되었다. 특히나 투 포인터를 사용하는 문제는 while이 훨씬 쉽게 풀린다는걸 느꼈다.

댓글