CodeWars 서른 여덞 번째 문제

Updated:

Find the unique number

 public static double findUniq(double arr[]) {
    for(int i = 0; i < arr.length - 2 ; i++) {
        if(arr[i] == arr[i+1]) {
            if(arr[i] != arr[i+2]) {
                return arr[i+2];
            }
        } else {
            if(arr[i] == arr[i+2]) {
                return arr[i+1];
            } else {
                return arr[i];
            }
        }
    }

    return arr[0];
}
  • 처음에 짠 코드는 처음 부터 세개의 항을 비교하면서 버블 형식으로 처리하는 것이었다.
public static double findUniq(double arr[]) {
    Arrays.sort(arr);
    return arr[0] == arr[1] ? arr[arr.length -1] : arr[0];
}
  • 후에 다시 생각해보니 정렬한 후에 아래 코드 처럼 한 항만 비교하면 된다.
  • 성능상에서는 위에 코드가 더 낫긴 하다. 정렬은 결국 한번 전체 순회를 해야 하는데 위에 코드는 처음이나 중간에 언제 든지 빠져 나올 수 있기 때문이다.
  • 그래도~ 아래코드가 훨씬 낫다. 한눈에 알아볼 수 있기도 하고 성능따져봐야 그리 차이가 나지도 않는다.
  • 그리고 이번 문제로 codewars 200점 돌파