Find The Parity Outlier ( 6 kyu )
문제
You are given an array (which will have a length of at least 3, but could be very large) containing integers. The array is either entirely comprised of odd integers or entirely comprised of even integers except for a single integer N. Write a method that takes the array as an argument and returns this “outlier” N.
For example:
[2, 4, 0, 100, 4, 11, 2602, 36]
Should return: 11 (the only odd number)
[160, 3, 1719, 19, 11, 13, -21]
Should return: 160 (the only even number)
해당 배열에 홀수 값이 1개만 있으면 그 값을 리턴, 짝수 값이 1개만 있으면 그 값을 리턴하는 문제
풀이
function findOutlier(integers){
let arr = [];
for ( let i = 0; i < integers.length; i++ ) {
arr.push(Math.abs(integers[i]%2));
}
return arr.indexOf(1) === arr.lastIndexOf(1) ? integers[arr.indexOf(1)] : integers[arr.indexOf(0)]
}
새로운 배열에 2로나눈 절댓값을 넣어서
만약 홀수가 한개면 배열 안에 1이 한개가 있을 것이고,
짝수가 한개면 배열 안에 0이 한개 있을 것이다.
여기서 indexOf와 lastIndexOf가 같으면 그 값이 한개만 존재한다는 뜻이 삼항연산자로 해당 값을 리턴.
쓰레기같은 발상이였다..
다른 사람의 풀이
function findOutlier(int){
var even = int.filter(a=>a%2==0);
var odd = int.filter(a=>a%2!==0);
return even.length==1? even[0] : odd[0];
}
필터쓰면 간단하게 풀 수 있는 문젠데, 생각조차 못했음..
filter.. 메모..