Q. 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.
Examples.
[2, 4, 0, 100, 4, 11, 2602, 36] --> 11 (the only odd number)
[160, 3, 1719, 19, 11, 13, -21] --> 160 (the only even number)
S. integers를 짝수인지에 따라 true, false의 리스트로 만들고, true의 갯수가 1이면 아웃라이어가 짝수, 아니면 홀수라고 판별했다.
그리고 그 아웃라이어의 인덱스에 해당하는 수를 리스트에서 검색했다.
int find(List<int> integers) {
final list = integers.map((e) => e.isEven).toList();
final outlier = list.where((e) => e == true).length == 1 ? true : false;
final index = list.indexOf(outlier);
return integers[index];
}
+
똑똑한 사람들이 많다 논리는 비슷하지만 훨씬 간결하당
int find(List<int> integers) {
List even = [];
List odd = [];
integers.forEach((e) => e.isEven ? even.add(e) : odd.add(e));
return even.length == 1 ? even[0] : odd[0];
}
'알고리즘 > Codewars' 카테고리의 다른 글
[Codewars] Exes and Ohs (0) | 2024.06.10 |
---|---|
[Codewars] Create Phone Number (0) | 2024.06.09 |
[Codewars] You're a square! (0) | 2024.06.09 |
[Codewars] Stop gninnipS My sdroW! (1) | 2024.06.08 |
[Codewars] Multiples of 3 or 5 (0) | 2024.06.06 |