본문 바로가기

javaScript/알고리즘 문제 풀이

배열 안에서 다른 숫자를 리턴하라.

하나의 단일 숫자를 제외하고는 모두 동일한 홀수 길이의 정수 배열이 제공됩니다.

그러한 배열에서 그 단일의 다른 번호를 돌려줍니다.

입력 배열은 항상 유효합니다! (홀수 길이> = 3)


1
2
[1, 1, 2] ==> 2
[17, 17, 3, 17, 17, 17, 17] ==> 3
cs





내 답


1
2
3
4
5
6
function stray(numbers) {
 
  let num=numbers.filter((value,idx,arr)=>if(value ==arr[idx+1]) return value;});
  
  return Number(numbers.filter(value => {if(value !== Number(num[0])){ return value;}}));
}
cs







best로 뽑힌 답변1



1
2
3
4
5
6
7
8
function stray(numbers) {
  
  for (var i in numbers){
  
     if (numbers.indexOf(numbers[i]) === numbers.lastIndexOf(numbers[i])){return numbers[i]}
  }
 
}
cs




best로 뽑힌 답변2


1
2
3
4
5
6
7
8
function stray(numbers) {
  var a = numbers.sort();
  
  if(a[0!= a[1]) {
    return a[0]
  } 
  return a[a.length-1]
}
cs





느낌 점.



1.indexOf()와 lastIndexOf()로 같은 것을 똑같은 것을 앞에서, 뒤에서 찾을 수 있다. 이 문제에서는 다른 하나를 리턴해내는 것이기 때문에,

앞 혹은 뒤에서 서치했을 때 같은 값을 리턴하도록 짜여 있고, 다른 숫자는 하나밖에 없기에 원하는 답이 나올 수 밖에 없다.


2. sort()으로 내용에 아무것도 없이 정렬하면 같은 단위 / 하나 이런식으로 나오기 떄문에 원하는 숫자가 앞에 있을지, 뒤에 있을지 모르기 떄문에 if으로 답이 나올 수 있게 해준다.