728x90
오늘의 문제는 LeetCode
121. Best Time to Buy and Sell Stock
문제
문제 설명
배열 prices에 담긴 stock을 사고 팔아서 최대 이익을 반환하는 문제입니다. prices[i]는 i번째 날의 stock 가격을 의미합니다.
당일에 산 stock은 판매할 수 없으며 무조건 구매가 판매보다 먼저 이루어져야 합니다. 만약 수익이 나지 않을 경우, 0을 반환해야 합니다.
[입력 예시]
prices = [7,1,5,3,6,4]
[출력 예시]
5
문제 풀이 시간
권장 풀이 시간은 60분이었고, 저는 43분이 걸렸습니다.
문제 접근 방식
매입 금액과 이익을 계산할 변수로 설정합니다. prices 배열을 순회하며 현재 주식 가격을 판매 가격으로 간주합니다. 만약 판매 금액이 매입 금액보다 클 경우 현재 이익과 기존 이익을 비교해 큰 값을 이익 변수에 저장합니다.
만약 매입 금액이 판매 금액보다 적을 경우, 해당 가격을 새로운 매입 금액으로 갱신합니다.
위 과정을 반복해 최종적으로 최대 이익을 반환합니다.
문제 풀이
class Solution {
public int maxProfit(int[] prices) {
int profit = 0;
int buy = prices[0];
for(int sell : prices) {
if(sell > buy) {
profit = Math.max(profit, sell - buy);
} else {
buy = sell;
}
}
return profit;
}
}
이렇게 오늘 42일차 TIL을 작성해 보았습니다.
728x90
'🍪 Ect > #Study' 카테고리의 다른 글
[99클럽 코테 스터디] 41일차 TIL DP (0) | 2024.08.31 |
---|---|
[99클럽 코테 스터디] 40일차 TIL DP (0) | 2024.08.30 |
[99클럽 코테 스터디] 39일차 TIL 그리디 (0) | 2024.08.29 |
[99클럽 코테 스터디] 38일차 TIL 그리디 (0) | 2024.08.28 |
[99클럽 코테 스터디] 37일차 TIL 완전 탐색 (0) | 2024.08.27 |
댓글