🍪 Ect/#Study
[99클럽 코테 스터디] 42일차 TIL DP
개발한 너굴씨
2024. 9. 1. 21:47
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