Say you have an array for which the ith element is the price of a given stock on day i.
If you were only permitted to complete at most one transaction (i.e., buy one and sell one share of the stock), design an algorithm to find the maximum profit.
Note that you cannot sell a stock before you buy one.
Example 1:
Input: [7,1,5,3,6,4]
Output: 5
Explanation: Buy on day 2 (price = 1) and sell on day 5 (price = 6), profit = 6-1 = 5.
Not 7-1 = 6, as selling price needs to be larger than buying price.
Example 2:
Input: [7,6,4,3,1]
Output: 0
Explanation: In this case, no transaction is done, i.e. max profit = 0.
Solution:
class Solution:
def maxProfit(self, prices: List[int]) -> int:
minPrice = float(inf) #임의의 가장 큰 수 inf
profit = 0
maxProfit = 0
for i in range(len(prices)):
minPrice = min(minPrice, prices[i])
maxProfit = max(maxProfit, prices[i] - minPrice)
return maxProfit
(참고 개념)
#임의의 가장 큰 수 inf
- 최솟 값을 저장하는 변수에 임의의 가장 큰 값을 할당해야 할 때 파이썬에서는 비교할 데이터가 아주 큰 경우 정상 작동하지 않을 수 있다.
- 파이썬이 제공하는 inf를 사용하면 inf는 어떤 숫자와 비교해도 무조건 크다고 판정된다.
- 음수 기호를 붙일 수도 있다.
max_val = float('inf') # 무조건 큰 값
max_val > 10000
# True
min_val = float('-inf') # 무조건 작은 값
min_val < -1000
# True
#int와 float의 차이
숫자라는 것은 4나 4.0이나 같은 것입니다. 하지만 파이썬에서는 다릅니다. 이 둘은 동시에 연산을 할 수 있기는 하겠으나, 값이 같을지는 몰라도 같은 타입은 아닙니다. 4는 정수고, 4.0은 수소점이 있는 수이기 때문이죠. 전자를 int라고 부르고 후자를 float이라고 부릅니다.
(참고 사이트)
https://siyoon210.tistory.com/94
https://velog.io/@dadumvu/Leetcode-121.-Best-Time-to-Buy-and-Sell-Stock
https://programmers.co.kr/learn/courses/4008/lessons/52865
https://lar542.github.io/Python/2019-07-11-python8/
https://alegruz.imweb.me/blog/?idx=244919&bmode=view
'Python > PS in Python' 카테고리의 다른 글
LeetCode 1. Two Sum - Python (0) | 2020.08.31 |
---|---|
LeetCode 543. Diameter of Binary Tree - Python (0) | 2020.08.25 |
LeetCode 21. Merge Two Sorted Lists - Python (0) | 2020.08.21 |
LeetCode 448. Find All Numbers Disappeared in an Array (0) | 2020.08.18 |
LeetCode 283. Move Zeroes - Python (0) | 2020.08.16 |
댓글