완주하지 못한 선수

김민석·2021년 2월 19일
0

오답노트 Lv.1

목록 보기
2/8

이 문제에서 내가 자꾸 통과를 하지 못한 부분은 효율성 부분이었다.
나머지 코드들 모두 정확성은 통과했다.

def solution(participant, completion):
    
    # for i in completion:
    # participant.remove(i)
    # return participant[0]

    # for i in participant:
    #     if completion.count(i) != participant.count(i):
    #         return i

    # for i in participant:
    #     if i not in completion:
    #         return i        
    #     else :
    #         completion.remove(i)
    result = {}
    for i in participant:
        if i in result:
            result[i] +=1        
        else :
            result[i] = 1
    for k in completion:
        result[k] -=1

    return [k for k, v in result.items() if v == 1 ][0]

아래의 것은 다른 사람의 풀이 중 내 의도와 가장 같은 것을 가져왔다.

result = {}

def solution(participant, completion):
    for a in participant:
        result[a] = result.get(a, 0) + 1

    for b in completion:
        result[b] -= 1
        if result[b] == 0:
            del result[b]
    return list(result.keys())[0]

내 코드와의 차이는

  • del을 사용하여 키 값 자체를 없애버린 것.
  • 따라서 마지막에 존재하는 키만을 가져온 것.
  • get이라는 method를 사용한 것.

get method를 어제 정리했지만 문제 풀 때는 생각이 나지 않았었다.
다음에 꼭 활용 할 수 있기를!

0개의 댓글