반응형
▷ 문제 : AVAILABLE LESSONS 9 - MaxProfit (Easy)
▷ 해결 날짜 : 2022.04.20
▷ 소요 시간 : 40분
▷ 풀이 과정 :
처음에는 이중 반복문을 사용하려다가 무조건 효율성에서 걸릴 거 같아서 좀 더 고민을 해보았다.
그래서 내가 이전에 풀었던 문제 Lesson 8 EquiLeader 문제에서 leader와 max값을 구한 것처럼 특정 값을 저장해 놓고 계속 비교 후 교체해가면서 문제를 풀면 좋을 것 같아 그렇게 방향을 잡고 구현을 해보았다.
계속 비교해가며 작은 수를 저장해 두고 최대한 이익이 나는 방향으로 max를 사용해 값을 교체해주었다.
▷ 구현
function solution(A) {
let maxProfit = 0;
let minPrice = A[0];
for(let i = 1 ; i < A.length ; i++){
let newProfit = A[i] - minPrice;
if(minPrice > A[i]) minPrice = A[i];
maxProfit = Math.max(maxProfit, newProfit);
}
if(maxProfit < 0) return 0;
return maxProfit;
}
▷ 복기 :
기본적으로 모든 문제를 O(N)의 복잡도 풀 수 있어야 코테에 익숙해졌다 라는 생각이 든다.
그 과정을 바로 생각해 내는게 중요한데 짧은 시간 안에 그 생각에 도달한다는 게 쉽지 않은 것 같다.
반응형
댓글