본문 바로가기

알고리즘 문제 풀이

Q14. superIncreasing // 1시간 안에 성공!

 

=================== 해답 =========================

 

package com.codestates.coplit; 
import java.util.*;

public class Solution { 
  public boolean superIncreasing(int[] arr) {
    /*
    arr 입력받아 arr[i] > arr[0] ~ arr[i-1]
    <풀이>
    arr[i]의 값을 비교가능하게 만들어야한다.
    arr[i] == sum false
    arr[i] > sum true
    arr[i] < sum false
 
    한번이라도 false라면 즉시 false를 리턴하고, 
    true의 경우는 arr[arr.length-1]까지 true여야지만 true이므로
    끝까지 계산을 한 다음 result를 리턴해야한다.

    */
    int sum = 0;
    boolean result = true;

    for (int i = 1; i < arr.length; i++) {
      sum += arr[i-1];

      if (arr[i] > sum) {
        result = true;
      }
      else if (arr[i] <= sum) {
        result = false;
        return result;
      }
    }
    return result;
  } 
}