Codility #7. MaxProfit

고독한 키쓰차·2021년 7월 18일
0

코딩테스트

목록 보기
9/16

ㅠㅠ 꽤 시간 걸렸다... 고통스러웠음
처음엔 정렬을 어떤식으로 할까 계속 생각을 하다가 아무리 생각해봐도 시간복잡도가 N^2이 나왔다.
그래서 차분하게 다시 내가 해야하는것이 무엇인가에 대해 생각해봤다.
우선 인풋 벨류가 시간으로 정렬이 되었으니 이것은 건드리지 말고 생각을 해보면,
1. 최소값을 찾는것이 중요하다.
2.계산된 값이 이전 업데이트 된 계산된 값보다 큰지

이 두개에 집중해서 코드를 짜다보니 되게 쉽게 정답은 나왔다.


class Solution {
    public int solution(int[] A) {
        int N = A.length; 
        if(N == 0){
            return 0;
        }
        int min = Integer.MAX_VALUE;
        int result = 0;
        for(int i = 0; i < N; i++){
            if(A[i] < min){
                min = A[i];
            }
            if(A[i] - min > result){
                result = A[i] - min;
            }
        }
        return result;
    }
}

profile
Data Scientist or Gourmet

0개의 댓글