Codility Java MaxProfit

업데이트:

문제

Link

코드

// you can also use imports, for example:
// import java.util.*;

// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");

class Solution {
  public int solution(int[] A) {
    int result = 0;
    // The function should return 0 if it was impossible to gain any profit.
    if (A.length < 2) {
      return 0;
    }
    int min = A[0];
    for (int idx = 1; idx < A.length; idx++) {
      if (A[idx] < min) {
        min = A[idx];
      } else {
        int temp = A[idx] - min;
        if (result < temp) {
          result = temp;
        }
      }
    }
    return result;
  }
}

설명

  1. 주어진 배열 A의 크기가 2보다 작으면 이익을 계산할 수 없으므로, 0을 주어진 문제의 결과로 반환한다.
  2. 초기 최소값을 주어진 배열 A의 0번째 인덱스로 초기화 하고, 최대 이익을 계산한다.
    • 최대 이익은 현재 값과 최소 값의 차이가 가장 큰 지점을 찾아야 하므로, 만일 최소값을 저장한 변수 min보다 작은 값이 주어진 경우 min에 현재 값을 저장한다.
    • 위의 경우가 아니면 현재 값을 최소값을 저장한 변수 min의 차이를 결과로 임시 저장을 한다.
  3. 반복이 끝나면 최대 이익을 계산한 result를 주어진 문제의 결과로 반환한다.

결과

Link

소스

Sample Code는 여기에서 확인 가능합니다.

댓글남기기