プログラマー全行程を完走しなかった選手


<問題の説明>
多くのマラソン選手がマラソンに参加した.1人の選手を除いて、すべての選手がマラソンを完走した.
マラソンに出場する選手の名前と完走した選手の名前の並びが完成したら、完走していない選手の名前を返す解決関数を書いてください.
<制限>
  • マラソンに出場する選手は1人以上10万人以下.
  • 完了長さは参加者長1より小さい.
  • 参加者の名前は20文字を超えない.
  • の参加者には同名の人がいる可能性があります.

  • 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"
    <トラブルシューティング>
  • 完了者ではなく参加者を見つけました
  • P、Cアレイ毎に重複値(同名)がある場合、順序は重要でない
  • .
  • 私たちが探しているのは、参加者=pの配列と完了=cを確認することです.
  • c配列に残っている人のようにドア
  • を回す
  • このとき並べ替えられた配列の中で互いに値を比較する場合、値が異なる場合、pの配列から値
  • を抽出する.
  • しかし最後の配列値は現れないので、p[i]=最後の配列値
    参加者[len(参加者)-1]を返します.
  • def solution(participant, completion):
    	# 1. 두 리스트를 sorting을 한다.
    	participant.sort()
        completion.sort()
        
        #2. completion list의 lenght만큼을 돌면서, participant() 에만 존재하는 한 명을 찾는다.
        for in range(len(completion):
        	if participant[i] != completion[i]:
            	return participant[i]
                
        return participant[len(participant[i]) -1] #3.그럼에도 안나오면 마지막인덱스를 찾아간다.
                
    def solution(participant, completion):
    	hashDict = {}
        sumHash = 0 
        # 1. participant list의 구하고 ,hash 값을 더한다
        for part in participant:
        	hashDict[hash(part)] =  part
            sumHash += hash(part)
        # 2. completion list 의  hash을 빼준다.
        for comp in completion:
        	sumHash -= hash(comp)
        # 3. 남은 값이 완주하지 못한 선수의 hash 값이 된다.
        
        return hashDict[sumHash]