책읽기
[파이썬 알고리즘 인터뷰][그리디] 주식을 사고팔기 가장 좋은 시점2
pythaac
2021. 8. 30. 03:47
이 글은 "파이썬 알고리즘 인터뷰 (박상길 지음)"을 읽고 주관적으로 요약한 글입니다.
문제 정의
주식 가격이 시간순으로 주어질 때 최대 이익 출력
책에서 구현된 코드
from typing import List
class Solution:
def maxProfit(self, prices: List[int]) -> int:
# 0보다 크면 무조건 합산
return sum(max(prices[i + 1] - prices[i], 0) for i in range(len(prices) - 1))
기억해야할 기법
- "그리디 알고리즘으로 접근해야한다"는 힌트를 어디서 얻을 수 있을까
- 문제를 잘 해석하면 모든 이익의 합산이다
- sell & buy를 동시에 할 수 있다는 것을 캐치하면 쉬운 문제였다
- 나는 나중에 팔았을 때 더 이득을 보는 경우가 있는지 계산을 해본 후에 코드를 작성할 수 있었다
- 비슷한 문제를 많이 풀어서 감을 찾아야겠다
내가 구현한 코드
from typing import List
class Solution:
def maxProfit(self, prices: List[int]) -> int:
return sum([prices[i+1] - prices[i] for i in range(len(prices)-1) if prices[i+1] - prices[i] > 0])
- max로 구현하는 게 더 짧아서 보기 좋은 것 같다