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점 돌파