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가 나왔다.
'Java > 알고리즘' 카테고리의 다른 글
올바른 괄호 (0) | 2023.04.20 |
---|---|
최댓값과 최솟값 (0) | 2023.04.18 |
문자열배열 세로로 읽어버리기 (0) | 2022.12.05 |
문자열사이에 '-' 삽입하자! (홀수사이에만!) (0) | 2022.11.26 |
문자열중 특정문자로 시작해 특정문자로 끝나는지 찾아용 (1) | 2022.11.25 |