Best Time to Buy and Sell Stock
연속된 여러 날의 주식 가격이 주어지며, 하루에 가격이 하나씩 있습니다. 어떤 날 주식 1주를 매수하고 그보다 나중인 날에 매도할 수 있습니다. 이익은 매도가에서 매수가를 뺀 값이며, 가능한 한 가장 큰 이익을 원합니다. 모든 거래에서 손실이 발생한다면 거래하지 않고 0을 얻습니다.
가격이 [7, 2, 5, 9, 1, 4]라고 해 봅시다. 1일 차에 2에 매수하고 3일 차에 9에 매도하면 7을 벌며, 다른 어떤 날짜 쌍도 이보다 나은 결과를 내지 못합니다. 4일 차에 1에 매수하는 것이 가장 저렴한 날이라 솔깃해 보이지만, 그 이후에 매도할 수 있는 날의 가격은 4뿐이므로 그 거래로는 3만 벌 수 있습니다.
정수 목록 prices를 받는 maxProfit이라는 함수를 작성하세요. 여기서 prices[i]는 i일째의 주가이며, 하루에 매수하고 그보다 나중에 매도하여 얻을 수 있는 최대 이익을 반환합니다. 거래로 이익을 얻을 수 없다면 0을 반환하세요.
제약 조건: 1 ≤ prices.length ≤ 10^5, 0 ≤ prices[i] ≤ 10^4.
함수
- arg1integer-array
- 반환값integer
예제
- 입력
- arg1 = [7, 2, 5, 9, 1, 4]
- 출력
- 7
- 입력
- arg1 = [9, 7, 4, 3, 1]
- 출력
- 0
제출 시 숨은 테스트 +12개
힌트
하나씩 열어 보세요. 열 때마다 조금 더 알려 줍니다.
판매는 항상 구매 이후에 이루어집니다. 판매할 날을 선택하세요. 어떤 구매일을 선택해야 가장 큰 수익을 낼 수 있을까요?
주어진 매도일에 가장 좋은 매수일은 그보다 앞선 날짜 중 가장 저렴한 날입니다. 앞으로 진행하면서 그 날짜를 기억해 두면 매번 다시 찾을 필요가 없습니다.
날짜를 순서대로 살펴보면서 지금까지의 최저 가격과 최대 이익, 두 가지 값을 유지하세요. 매일 오늘의 가격에서 최저 가격을 뺀 값과 최대 이익을 비교한 다음, 최저 가격을 갱신하세요.
이 문제의 전체 풀이가 곧 추가됩니다.
비슷한 문제
같은 아이디어를 쓰는 문제입니다. 두세 개를 풀면 패턴이 몸에 익습니다.
Python
def maxProfit(prices):
# 여기에 코드를 작성하세요케이스 1
케이스 2
입력
arg1 = [7, 2, 5, 9, 1, 4]
기대값
7