본문 바로가기
공부/algorithm

[codility] Triangle

by 밍미 2018. 7. 14.
Triangle

Triangle

Determine whether a triangle can be built from a given set of edges.

Task Score

93%

Correctness

90%

Performance

100%


 

주어진 배열 A에서

  • A[P] + A[Q] > A[R],
  • A[Q] + A[R] > A[P],
  • A[R] + A[P] > A[Q].

를 만족하는 세 숫자가 존재하면 1을 반환하고, 아니면 0을 반환하는 문제이다.

일단 시간복잡도가 O(NlogN)이기 때문에 for문 3개를 돌리는 것은 안될 말이고.. 그렇다고 for문을 3개로 나눠서 뭐 어떻게 저떻게 하자니 그건 또 아닌 것 같고..

그래서 sort로 A를 정렬해주고 연속된 세 숫자를 비교해주는 방식을 사용했다. 크기 순서대로 정렬해서 처음에는 세가지 조건을 모두 &&(and)로 묶어서 if의 조건문으로 넣어주었는데, 조건문의 갯수와 상관없이 계속 93%가 나온다....ㅠㅠ 테스트 케이스 중 한가지를 계속 만족시키지 못하는데, 그것도 만족할 수 있도록 다른 방법도 더 생각해봐야겠다.

 


'공부 > algorithm' 카테고리의 다른 글

[programmers] 쇠막대기  (0) 2018.10.29
[programmers] 완주하지 못한 선수  (0) 2018.10.28
[programmers] 올바른 괄호  (0) 2018.06.05
[programmers] 같은 숫자는 싫어요  (0) 2018.06.05
[codility] MaxProductOfThree  (0) 2018.05.24

댓글