[Programmers]Hash-完走していない選手(Python)


ソース

Hash:フルコース未走の選手[Lv 1]


問題の説明


多くのマラソン選手がマラソンに参加した.1人の選手を除いて、すべての選手がマラソンを完走した.
マラソンに出場する選手の名前と完走した選手の名前の並びが完成したら、完走していない選手の名前を返す解決関数を書いてください.

せいげんじょうけん

  • マラソンに出場する選手は1人以上10万人以下.
  • 完了長さは参加者長1より小さい.
  • 参加者の名前は20文字を超えない.
    参加者は同名であってもよい.
  • I/O例


    participantcompletionreturn["leo", "kiki", "eden"]["eden", "kiki"]"leo"["marina", "josipa", "nikola", "vinko", "filipa"]["josipa", "filipa", "marina", "nikola"]"vinko"["mislav", "stanko", "mislav", "ana"]["stanko", "ana", "mislav"]"mislav"

    I/O例説明


    例1
    「leo」は参加者名簿に載っているが、フルコースを走る者名簿には載っていないため、フルコースを完走できなかった.
    例2
    「vinko」は参加者名簿に載っていたが、完走者名簿に載っていなかったため完走できなかった.
    例#3
    「誤導」は参加者リストに2人いたが、完走者リストには1人しかいなかったため、1人は完走しなかった.
     

    Solution


    説明する

    def solution(participant, completion):
        answer = ''
        dic = dict()
        for p in participant:
            dic[p] = dic.get(p, 0) + 1
    
        for c in completion:
            dic[c] -= 1
    
        for p in participant:
            if dic[p] == 1:
                answer = p
    
        return answer
    

    結果



    Best Code

    import collections
    
    def solution(participant, completion):
        answer = collections.Counter(participant) - collections.Counter(completion)
        return list(answer.keys())[0]
    
    collections.カウンタを使用して、各オブジェクトの数を知ることができます.
    上のコードと同じように、ディックシャーナを外すこともできます.