2022년 2월 01일 화요일 - 오랜만에 글을 쓰려고 보니 해가 바뀌었네요... 하하
오늘 올려볼 문제는 121번 Best Time to Buy and Sell Stock 이라는 문제이다.
사진을 클릭하면 해당 문제로 이동합니다.
오늘은 LeetCode 사이트 오늘의 문제를 가지고 왔다.
어느새 블로그를 까먹고 지내서... 찍먹 중인 leetcode로 올려봅니다
입력 예제
사진에서도 볼 수 있듯이 배열 하나를 입력받는다.
이 때 배열의 인덱스는 날짜를 뜻한다.
풀이 및 코드
일단 처음 접근은 max와 min 값을 찾고 min 값의 인덱스가 max 값의 인덱스보다 작은지 큰지 판단하여 처리하는 방식으로 접근했다.
하지만 진행해보면서 생각보다 처리할게 많다는 것을 깨닫고 다른 방향을 찾았다.
그러던중 스택을 사용하는 느낌으로 문제를 접근해봤다. 스택을 사용하지는 않는다
여태까지 봤던 주식들 중 가장 낮았던 값을 저장하고 현재 값과 차이를 구하는 방식으로 구현해봤다.
설명보다는 코드로 보면 이해가 빠를 것이다. 이제 코드를 봐보자!
풀이코드
class Solution {
public int maxProfit(int[] prices) {
int lastPrice = Integer.MAX_VALUE;
int result = 0;
for(int i = 0; i < prices.length; i++)
{
if(lastPrice > prices[i])
{
lastPrice = prices[i];
}
else
{
result = Math.max(result, prices[i] - lastPrice);
}
}
return result;
}
}
제출 화면
오늘은 leetcode 사이트 찍먹하는겸, 블로그가 생각난 겸 뭔가 복합적인 이유로 블로그에 글을 쓴다.
워낙에 글 쓰기를 즐겨하지 않아서 이번에 글 쓰는 것도 망설여졌지만 시간도 많아서 써봤다.
또한 leetcode는 자체 ide가 꽤 편하고 입출력에 대한 처리도 매우 편해서 이제 백준에는 손이 잘 안가게 되었다.. ㅋㅋㅋㅋ
앞으로도 leetcode 오늘의 문제를 종종 올릴 예정이다.
'LeetCode 문제 풀이' 카테고리의 다른 글
[LeetCode] 80번 문제를 풀어보았다. (ft. java) (3) | 2022.02.06 |
---|---|
[LeetCode] 23번 문제를 풀어보았다. (ft. java) (0) | 2022.02.05 |
[LeetCode] 525번 문제를 풀어보았다. (ft. java) (0) | 2022.02.04 |
[LeetCode] 454번 문제를 풀어보았다. (ft. java) (0) | 2022.02.03 |
[LeetCode] 438번 문제를 풀어보았다. (ft. java) (0) | 2022.02.02 |