CodeKata | Week 4 Day 2

Ssss·2021년 3월 1일
0

문제

prices는 배열이며, 각 요소는 매일의 주식 가격입니다.
만약 한 번만 거래할 수 있다면 = 사고 팔 수 있다면,
제일 큰 이익은 얼마일까요?

Input: [7,1,5,3,6,4]
Output: 5

설명:
2일(가격=1)에 샀다가 5일(가격=6)에 사는 것이 6-1이라 제일 큰 수익
7-1=6 은 안 되는거 아시죠? 먼저 사야 팔 수 있습니다.

Input: [7,6,4,3,1]
Output: 0

설명:
여기서는 매일 가격이 낮아지기 때문에 거래가 없습니다. 그래서 0

첫접근

const maxProfit = prices => {
let profit = []
for(let i=0; i<prices.length;i++){
  for(let j=i+1; j<prices.length;j++){
    if(prices[j]>prices[i]){
      profit.push(prices[j]-prices[i])
    } else {profit.push(0)}
  }
} return profit.reduce(function(a,b){return Math.max(a,b)})
}

결과는 통과~~ 👻
먼저 profit이라는 빈배열을 만들고 for-loop을 두번 돌린다. i는 0부터 시작하지만 j는 i와 비교를 해야하기때문에 i+1부터 시작한다. 이렇게 돌아가는 for-loop에서 만약 prices[j]prices[i]보다 클 경우 prices[j]에서 prices[i]를 뺀후 그 숫자를 profit이라는 배열에 집어넣는다. 그렇지 않을 경우는 0을 profit에 넣는다. 그러고 나서 마지막에 profit이라는 배열안에 가장 큰 숫자를 반환한다.

profile
Front-end Developer 👩‍💻

0개의 댓글