이 글은 "파이썬 알고리즘 인터뷰 (박상길 지음)"을 읽고 주관적으로 요약한 글입니다.
문제 정의
주식 가격이 시간순으로 주어질 때 최대 이익 출력
책에서 구현된 코드
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로 구현하는 게 더 짧아서 보기 좋은 것 같다
'책읽기' 카테고리의 다른 글
[파이썬 알고리즘 인터뷰][그리디] 태스크 스케줄러 (0) | 2021.09.01 |
---|---|
[파이썬 알고리즘 인터뷰][그리디] 키에 따른 대기열 재구성 (0) | 2021.08.30 |
[파이썬 알고리즘 인터뷰] 21장 - 그리디 알고리즘 (1) | 2021.08.30 |
[Java의 정석][Chapter-7] 객체지향 프로그래밍 2 (2/2) (0) | 2021.08.23 |
[쉽게 배우는 데이터 통신과 컴퓨터 네트워크](요약)[Chapter-5] MAC 계층 (0) | 2021.08.17 |