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.. 메모..


'자료구조, 알고리즘 > Codewars 문제' 카테고리의 다른 글

Take a Ten Minute Walk ( 6 kyu )  (0) 2017.11.24
IQ Test ( 6 kyu )  (0) 2017.11.24
Duplicate Encoder ( 6 kyu )  (0) 2017.11.23
Stop gninnipS My sdroW! ( 6 kyu )  (0) 2017.11.22
Persistent Bugger. ( 6 kyu )  (0) 2017.11.22

+ Recent posts