하나의 단일 숫자를 제외하고는 모두 동일한 홀수 길이의 정수 배열이 제공됩니다.
그러한 배열에서 그 단일의 다른 번호를 돌려줍니다.
입력 배열은 항상 유효합니다! (홀수 길이> = 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으로 답이 나올 수 있게 해준다.
'javaScript > 알고리즘 문제 풀이' 카테고리의 다른 글
두 배열로 최대,최소 빼서 더 큰 숫자를 리턴하라 (0) | 2018.06.14 |
---|---|
기한 내에 쿠폰이 회수되었는지 증명하라. (0) | 2018.06.11 |
a-m이 아닌 문자 길이를 구하라 (0) | 2018.06.05 |
배열의 평균값을 구하기 (0) | 2018.06.04 |
배열을 짝수나 홀수로 리턴하도록 만들자 (0) | 2018.06.04 |