codility - Triangle 정답 및 해설
뿌리튼튼 CS/Algorithm2017. 7. 12. 14:42
난이도 ★★☆☆☆
문제 요약
입력받은 숫자들을 변의 길이라고 가정했을 때, 삼각형을 그릴 수 있는지를 리턴 |
힌트
논리적인 답은 몇줄이면 끝난다. 근데 -.-; 두가지 이유때문에 코드가 지저분해진다. (경우의 수 문제) 1. 음수가 입력될 수 있다. 2. 오버플로우를 고려해야 한다. |
이하는 코드입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | public int solution(int[] A) { Arrays.sort(A); for (int i = A.length - 3; i >= 0; i--) { if (isTriangular(A[i], A[i + 1], A[i + 2])) { return 1; } } return 0; } private boolean isTriangular(int l1, int l2, int l3) { boolean ok; int sum12 = l1 + l2; if (l1 > 0 && l2 > 0 && sum12 < 0) { ok = true; } else if (l1 < 0 && l2 < 0 && sum12 > 0) { ok = false; } else { ok = sum12 > l3; } if (!ok) { return false; } int sum23 = l2 + l3; if (l2 > 0 && l3 > 0 && sum23 < 0) { ok = true; } else if (l2 < 0 && l3 < 0 && sum23 > 0) { ok = false; } else { ok = sum23 > l1; } if (!ok) { return false; } int sum31 = l3 + l1; if (l3 > 0 && l1 > 0 && sum31 < 0) { ok = true; } else if (l3 < 0 && l1 < 0 && sum31 > 0) { ok = false; } else { ok = sum31 > l2; } return ok; } | cs |
'뿌리튼튼 CS > Algorithm' 카테고리의 다른 글
알고리즘의 복잡도란? (2. 시간 복잡도) (0) | 2017.07.28 |
---|---|
알고리즘의 복잡도란? (1. 공간 복잡도) (0) | 2017.07.28 |
codility - MaxProductOfThree 정답 및 해설 (0) | 2017.07.12 |
codility - Distinct 정답 및 해설 (0) | 2017.07.12 |
codility - MinAvgTwoSlice 정답 및 해설 (0) | 2017.06.09 |