본문 바로가기
Algorithm/문제풀이

[Codility] MaxProfit (Easy) by javascript - AVAILABLE LESSONS 9

by 썸머워즈 2022. 4. 20.
반응형

▷ 문제 : AVAILABLE LESSONS 9 - MaxProfit (Easy)

 

MaxProfit coding task - Learn to Code - Codility

Given a log of stock prices compute the maximum possible earning.

app.codility.com

▷ 해결 날짜 : 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)의 복잡도 풀 수 있어야 코테에 익숙해졌다 라는 생각이 든다.

그 과정을 바로 생각해 내는게 중요한데 짧은 시간 안에 그 생각에 도달한다는 게 쉽지 않은 것 같다.

반응형


댓글

TOP