array 문제이다. 문제 조건을 차분히 따라가기만 하면 되는 쉬운 문제 였다.
처음에는 min과 max를 생각했다. 하지만 시간순이라는게 존재하고, 최악의 경우 내림차순 정렬이라면 아에 수익을 낼 수 없다
for문으로 차근차근 해결하면 답이나오지 않을까..
일단 최소값 변수를 만들어 최소값을 갱신하고, 현재값에서 최소값을 빼 max_profit을 갱신한다.
처음에는 모든 profit을 배열 자료구조에 저장해 최대값을 구할까 생각했지만, 굳이 그럴 필요가 없다.
class Solution(object):
def maxProfit(self, prices):
"""
:type prices: List[int]
:rtype: int
"""
#그냥 리스트에서 최저 최고 뽑는건 안된다.
#시간을 따르고 있기 때문에.. 사기전에 팔 수 없기 떄문에..
#min num 을 만들고 그 다음 수랑 더해 리스트에 추가한다.
# 생각해봐.. 중요한건 최대 프로핏임. 민값갱신과, 프로핏 저장.
min_num = 100000
max_profit = 0
for i in prices:
if i <= min_num:
min_num = i
if i-min_num > max_profit:
max_profit = i - min_num
return max_profit
'leetcode' 카테고리의 다른 글
Leet code 53 - Maximum Subarray (0) | 2023.04.14 |
---|---|
Leet code 238 - Product of Array Except Self (0) | 2023.04.13 |
Leet code 217 - Contains Duplicate (0) | 2023.04.12 |
Leet code 1 -Two sum (0) | 2023.04.11 |
Leetcode 205 - isomorphic-strings (0) | 2023.04.09 |
댓글