IQ Test ( 6 kyu )

문제

Bob is preparing to pass IQ test. The most frequent task in this test is to find out which one of the given numbers differs from the others. Bob observed that one number usually differs from the others in evenness. Help Bob — to check his answers, he needs a program that among the given numbers finds one that is different in evenness, and return a position of this number.

! Keep in mind that your task is to help Bob solve a real IQ test, which means indexes of the elements start from 1 (not 0)

For example:

iqTest("2 4 7 8 10") => 3 // Third number is odd, while the rest of the numbers are even

iqTest("1 2 1 1") => 2 // Second number is even, while the rest of the numbers are odd

해당 배열에 홀수나 짝수 값이 1개만 있으면 해당 값이 몇 번째에 있는지 리턴하는 문제

풀이

function iqTest(numbers){
  let arr = numbers.split(' ').map(a => a%2);
  return arr.indexOf(0) === arr.lastIndexOf(0) ? arr.indexOf(0)+1 : arr.indexOf(1)+1;
}

arr에 기존 문자열을 배열로 쪼개 각 인자를 2로 나눈 나머지만 넣어주고

indexOf와 lastIndexOf를 비교해 한개만 있는 값의 인덱스 +1을 리턴

6 kyu 문제만 계속해서 포스팅 하는데 올리기에는 너무 쉬운 내용인 것 같기도 하지만 다른 사람들의 풀이를 보기 위해 올림..

다른 사람의 풀이

function iqTest(numbers){
  numbers = numbers.split(" ").map(function(el){return parseInt(el)});

  var odd = numbers.filter(function(el){ return el % 2 === 1});
  var even = numbers.filter(function(el){ return el % 2 === 0});

  return odd.length < even.length ? (numbers.indexOf(odd[0]) + 1) : (numbers.indexOf(even[0]) + 1);
}

풀고 보니까 저번에 푼 문제랑 똑같았다..하놔

필터쓰면 간단하게 풀 수 있는 문젠데, 또! 생각조차 못했음..

filter.. 메모..


+ Recent posts