본문 바로가기
Java/알고리즘

정수배열 각 요소가 앞에 요소들의 합보다 크면 레알참트루

by 티코딩 2022. 12. 6.
 

Int 배열을 입력받고 각요소가 그 앞에 요소들의 합보다 크면 true 반환하는 문제였다.

처음짰던 코드는 아래와 같다.

public class Main {
    public static void main(String[] args) {
       int[] arr = new int[]{979, 1737, -2146, -337,234};
        boolean result = true;

        for(int i =2; i < arr.length; i++){
            if(arr.length == 2){
                if(arr[0]>arr[1]){
                    result = false;
                }
                break;
            }
            if (arr[i-2] + arr[i-1] > arr[i]) {
                result = false;
            }
        }
        System.out.println(result);
    }
}​

 

 

처음에 이게 맞는줄 알았는데 다시 천천히 보니 이 코드는 이전의 값들의 합이 아니라 이전과 그전의 값만의 합과 비교하는 코드였다. 그래서 다시 생각해서 최대한 깔끔하게 만들었다.

public class Main {
    public static void main(String[] args) {
       int[] arr = new int[]{979, 1737, -2146, -337,234};
        boolean result = false;
        int sum = 0;
        for(int i = 1; i < arr.length; i++){
                sum += arr[i-1];
            if(sum < arr[i]){
                result =true;
            }else{
                result = false;
                break;
            }
        }
        System.out.println(result);
    }
}

이렇게했더니 깔끔히 통과했다. break를 안해주니 마지막 요소와 비교하게되어 true가 나왔다.