파이문

Find The Parity Outlier 본문

문제 풀이/codewars

Find The Parity Outlier

민Z 2016. 4. 2. 19:27

Find The Parity Outlier


주어진 리스트에서 홀수만 있다면 짝수를, 짝수만 있다면 홀수를 리턴하는 문제였습니다.

최근에 리스트 컴프리핸션에 대해서 배웠기에 이를 최대한 활용하려 하였습니다. 저의 목표는 최대한 pythonic하게, 가독성 따위는 전혀 없이 짧게 작성하는 것이었습니다. 


그런데 생각만큼 잘 안되더라구요. 역시 고기도 먹어본 놈이 먹는다고, 더 많이 써보고 더 공부해봐야 할 것 같아요.

결국 일단 답만 돌아가게 작성하고 다른 사람 코드를 보는 방향으로...ㅠㅠ

def find_outlier(integers):
    even_list = map(lambda x: x % 2, [x for x in integers])
    even = even_list.count(0)
    odd = even_list.count(1)
    print even_list
    if even > odd:  # find odd index
        index = even_list.index(1)
    else:
        index = even_list.index(0)
    return integers[index]

전체 리스트의 수를 2로 나누고 거기에서 0인 값은 짝수, 1인 값은 홀수 식으로 하여 짝수 홀수의 개수를 비교하였습니다.

그리고 적은 개수의 값의 인덱스 값을 지정하고 그에 해당하는 리스트의 인덱스 값을 리턴 하였습니다.


처음에 음수는 무시하는 줄 알고 따로 0과 비교하는 값을 넣었다가 valueError를 보게 되었었네요. 역시 문제는 끝까지 잘 읽어봐야 될 것 같습니다.


다른 사람의 소스 코드를 쭉 보았는데 역시 대부분이 람다, 필터 등 그리고 리스트 컴프리핸션을 쓰고 있었습니다.

'문제 풀이 > codewars' 카테고리의 다른 글

Triangle number check  (0) 2016.04.13
Consecutive strings  (0) 2016.04.10
Valid Phone Number  (0) 2016.04.10
Replace With Alphabet Position  (0) 2016.04.02
Comments